设集合A={1,2,3,4,5,6,7,8,9,10},求集合A的所有非空子集元素的和.

设集合A={1,2,3,4,5,6,7,8,9,10},求集合A的所有非空子集元素的和.,第1张

换一个角度来考虑这个问题:

包含元素1的非空子集B有多少个呢?

可以包含元素2或是不包含2

可以包含元素3或是不包含3

可以包含元素10或是不包含元素10

B的个数总共有2×2×2×2 = 2的9次方个

那么,把A的所有非空子集的元素加起来的时候,1这个元素被加了2的9次方次。1对总和的贡献为1×2^9

同理,包含元素2的非空子集B:

可以包含1或不包含;包含3或不包含

同理,2这个元素被加了2的9次方次,贡献:2×2^9

同理推3,4,10

所以所有非空子集的元素的总和为:

1×2^9 + 2×2^9 + + 10×2^9

=(1+2++10) × 2^9

=(1+10)10/2 × 2^9

= 55×2^9

= 55×512

= 28160

代码写好了,币种和金额作为Money类的属性存储到List中,再将List中重复币种的金额相加,如下(注意在Eclipse或者MyEclispse里面运行时,添加相关的包):

public class Money {

private String type; //币种

private int value; //金额

//初始化币种和金额

public Money(String type,int value){

thistype=type;

thisvalue=value;

}

//这个构造器仅仅用于获得一个Money类去调用isSameType()方法,注意这个类只能在本类中使用

Money(){}

//获取相同类型的币种并且将它们的金额总和放在一个list中

public List isSameType(List<Money> list){

List l = new ArrayList<Money>();

if(list!=null){

for (int i = 0; i < listsize(); i++) {

int sumMoney=listget(i)value;

for(int j = i+1;j<listsize();j++){

if(listget(i)typeequals(listget(j)type)){

sumMoney=sumMoney+listget(j)value;

listremove(listget(j));

j=j-1;//删除一个元素以后还原指针位置

}

}

Money m =new Money(listget(i)type,sumMoney);

ladd(m);

}

}

return l;

}

public String toString(){

return "币种类型:"+ thistype+"\t金额总和:"+thisvalue;

}

public static void main(String[] args) {

//初始化

List<Money> list = new ArrayList<Money>();

Money m1 = new Money("dollar",6);

Money m2 = new Money("renmbi",8);

Money m3 = new Money("dollar",7);

Money m4 = new Money("dollar",9);

Money m5 = new Money("lubu",4);

Money m6 = new Money("renmbi",10);

Money m7 = new Money("lubu",3);

Money m8 = new Money("taidao",15);

listadd(m1);//注意这里加入两次m1

listadd(m1);

listadd(m2);

listadd(m3);

listadd(m4);

listadd(m5);

listadd(m6);

listadd(m7);

listadd(m8);

Money m = new Money();

//求和

List l = misSameType(list);

for (int i = 0; i < lsize(); i++) {

Systemoutprintln(lget(i));

}

}

}

optionvoteView(getSid());这个方法获取到的集合,里面的元素是Long[]

所以你可以这么做

for(Object[] o:list){

if (olength>=3)

{

num=IntegervalueOf(o[2]toString());

}

}

以上就是关于设集合A={1,2,3,4,5,6,7,8,9,10},求集合A的所有非空子集元素的和.全部的内容,包括:设集合A={1,2,3,4,5,6,7,8,9,10},求集合A的所有非空子集元素的和.、java 结果集中list中根据每一个币种进行金额求和怎么写、从List<Object[]>中获取值累加等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9411178.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存