以贪婪的方式分配给定的数字
Distribute given number in a greedy manner
我在想出这个简单问题的方程式时碰壁了。我需要从不同的角度提出算法。我有一个数字x
,我想以贪婪的方式将它分配给n
个元素。
For x=9, n=3
[1,2,3],[4,5,6],[7,8,9] OR [3,3,3]
For x=10, n=3
[1,2,3,4],[5,6,7],[8,9,10] OR [4,3,3]
For x=11, n=3
[1,2,3,4],[5,6,7,8],[9,10,11] OR [4,4,3]
For x=12, n=3
[1,2,3,4],[5,6,7,8],[9,10,11,12] OR [4,4,4]
据我了解,您需要获得像 [4,4,3]
这样的数组。所以使用整数除法和模运算
smallvalue = x / n ; //integer division
largecount = x % n; //number of larger values
smallcount = n - largecount
现在用 largecount
数量 smallvalue+1
填充数组,然后用 smallcount
数量 smallvalue
如果您需要结果 [1,2,3,4],[5,6,7,8],[9,10,11]
- 使用相同的信息生成它。
我在想出这个简单问题的方程式时碰壁了。我需要从不同的角度提出算法。我有一个数字x
,我想以贪婪的方式将它分配给n
个元素。
For x=9, n=3
[1,2,3],[4,5,6],[7,8,9] OR [3,3,3]
For x=10, n=3
[1,2,3,4],[5,6,7],[8,9,10] OR [4,3,3]
For x=11, n=3
[1,2,3,4],[5,6,7,8],[9,10,11] OR [4,4,3]
For x=12, n=3
[1,2,3,4],[5,6,7,8],[9,10,11,12] OR [4,4,4]
据我了解,您需要获得像 [4,4,3]
这样的数组。所以使用整数除法和模运算
smallvalue = x / n ; //integer division
largecount = x % n; //number of larger values
smallcount = n - largecount
现在用 largecount
数量 smallvalue+1
填充数组,然后用 smallcount
数量 smallvalue
如果您需要结果 [1,2,3,4],[5,6,7,8],[9,10,11]
- 使用相同的信息生成它。