我在列表中找到最接近的sumElement组合时遇到了一些问题.
例:
这是我的清单:
list = {32183,15883,26917,25459,22757,25236,1657}
list.Sum = 150092
Run Code Online (Sandbox Code Playgroud)
而现在我正在分裂
list.Sum / z
z = variable(user Input - in this example it's 3)
Run Code Online (Sandbox Code Playgroud)
我明白了
50031
Run Code Online (Sandbox Code Playgroud)
现在我想从listElement summs中找到最接近的数字.
最接近50031是
32183 + 15883 = 48066
or
32183 + 15883 + 26917 = 74983
Run Code Online (Sandbox Code Playgroud)
所以我选择48066,接下来我想找到下一个元素,但我们必须跳过已计数的元素(在这种情况下我必须跳过32183 + 15883)
所以现在我们只能使用这些元素26917,25459,22757,25236,1657(尚未计算)
26917 + 25459 = 52376
or
26917 + 25459 + 22757 = 75133
Run Code Online (Sandbox Code Playgroud)
所以我选择了52376
我们这样做z(变量)次
我们可以按此顺序对元素求和,我们无法添加
32183 + 15883 + 1657
Run Code Online (Sandbox Code Playgroud)
因为这个跳过夫妇列出元素
我们可以对这种元素求和,我们不能对列表进行排序. 我们不能这样做,因为这些数字是来自.csv文件的行数,所以我必须按此顺序执行.
现在我有:
for (int i = 0; i < z; i++)
{ …Run Code Online (Sandbox Code Playgroud) 我在每个组仅获取TOP 2值时遇到问题(组在列中)。
范例:
ID Group Value
1 A 30
2 A 150
3 A 40
4 A 70
5 B 0
6 B 100
7 B 90
Run Code Online (Sandbox Code Playgroud)
我希望我的输出是
ID Group Value
1 A 150
2 A 70
3 B 100
4 B 90
Run Code Online (Sandbox Code Playgroud)
简而言之,对于每个组,我只想要2个具有最高价值的行