永发信息网

用ArrayList存数后,怎么让集合里的数求和?

答案:1  悬赏:20  手机版
解决时间 2021-02-03 16:28
用ArrayList存数后,怎么让集合里的数求和?
最佳答案
1、先将两数组排序,然后两数组先分别求和;
2、计算差值的绝对值,设为a,将a除以2后取整数,设为b;
3、然后将和大的数组中值最接近b的数与和小的数组中最小值交换。多次执行这个过程,直到绝对值最小为止。
例:
(1)public static void AverageArray();
(2){;
(3)int[] values = {1, 300, 20, 11, 5, 301};
(4)int n = values.Length / 2;
(5)int halfSum = values.Sum() / 2;
(6)List>> heap = new List>>(n + 1);
(7)heap.Add(new List>());
(8)heap[0].Add(new List());
(9)heap[0][0].Add(0);
(10)#region Seek the array;
(11)for (int k = 1; k <= 2 * n; k++);
(12){;
(13)int i = 1;
(14)if (k <= n);
(15){;
(16)i = k;
(17)heap.Add(new List>());
(18)};
(19)else;
(20){;
(21)i = n;
(22)};
(23)for (; i >= 1; i--);
(24){;
(25)foreach (List tempList in heap[i - 1]);
(26){;
(27)if(tempList[0] + values[k - 1] <= halfSum);
(28){;
(29)List newList = new List(tempList);
(30)newList[0] += values[k - 1];
(31)newList.Add(k - 1);
(32)heap[i].Add(newList);
(33)};
(34)};
(35)};
(36)};
(37)#endregion;
(38)List> result = heap[n];
(39)for (int k = 0; k + 1 < result.Count; );
(40){;
(41)if (result[k][0] > result[k + 1][0]);
(42){;
(43)result.RemoveAt(k + 1);
(44)};
(45)else if (result[k][0] == result[k + 1][0]);
(46){;
(47)k++;
(48)};
(49)else;
(50){;
(51)result.RemoveRange(0, k + 1);
(52)k = 0;
(53)};
(54)};
(55)}。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
步云塔这个地址在什么地方,我要处理点事
如何证明一个圆和一条直线相切
应聘中国人寿保险助理岗位需要考保险销售人员
九华药品零售连锁有限公司源鑫药房地址在什么
用i.t.a.a.c.t.s.f.n组成一个单词
晽晽的意思是什么啊?知道的请说下!
windows phone 手机如何刷机
下载了java,怎么都不能运行。弄了一上午了,
女主上官倾城男主南宫亦城的小说是什么
读“黄河流域图”及有关材料,回答下列问题:
石龙寨村地址有知道的么?有点事想过去
古体的意思是什么啊?知道的请说下!
【五年级科学上册教案】教科版五年级上册科学
独立桩承台底板配筋图纸显示为一长一短,是否
怡兰香食府地址在哪,我要去那里办事
推荐资讯
12小孩子眉毛上有白点是什么情况
社保够5年是不是意味着个税也5年了?
大树下私房菜我想知道这个在什么地方
研一休学考公务员行不行。我现在研一上学期,
杨家我想知道这个在什么地方
造梦西游ol启灵珠怎么注入灵气
中国个人可以直接投资外汇吗
婷美丽国际美妆体验中心这个地址在什么地方,
成语大全之W字打头的四字成语
鹿晗介意比自己小十几岁的女孩吗
老凤祥的金器在也不要在了!
6230270800000851033是那里的银行卡营业网点
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?