小编Pro*_*100的帖子

在列表中查找最接近的sumElement组合

我在列表中找到最接近的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)

.net c# algorithm

9
推荐指数
1
解决办法
623
查看次数

为每个组选择前2个值

我在每个组仅获取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个具有最高价值的行

sql sql-server

3
推荐指数
2
解决办法
3538
查看次数

标签 统计

.net ×1

algorithm ×1

c# ×1

sql ×1

sql-server ×1