永发信息网

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

答案:1  悬赏:20  手机版
解决时间 2021-02-03 16:28
  • 提问者网友:凉末
  • 2021-02-03 01:16
用ArrayList存数后,怎么让集合里的数求和?
最佳答案
  • 五星知识达人网友:青灯有味
  • 2021-02-03 02:02
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)}。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯