【发布时间】:2018-02-16 06:23:18
【问题描述】:
我有这个数组:
Array
(
[236] => 5.00
[39] => 5.00
[19] => 5.00
[37] => 5.00
[185] => 5.00
[235] => 3.00
)
例如:我有 20 个。总值为 28。现在我想减少数组中的值,直到减去 20。
所以这可能是新数组(它不知道从哪个值中减去它)。总值 = 8 (28-20)
数组
(
[236] => 0.00
[39] => 2.00
[19] => 0.00
[37] => 0.00
[185] => 3.00
[235] => 3.00
)
如何做到这一点?如果可能的话,我想要一个选项先从最大值或键号中减去。
【问题讨论】:
-
以相反的值顺序排序数组 => 测试总和 重置第一项 => 重复并重复
-
最后一个示例数组的逻辑是什么?为什么它的第二个值是两个而不是最后一个?或者为什么最后一个值不是 3 和 5 或 4 和 4 而不是 2,3,3?
-
SO 不是免费的代码编写服务...请参阅stackoverflow.com/help/how-to-ask 和stackoverflow.com/help/mcve
-
1/. 如果 X 是你需要减去的值,检查 Array sum 是否 >= to X. 2/. 排序你的数组按 [number] desc。 3/. 对于每个 CellValue:a)。如果 CellValue 4/. 如果 X=0 离开 foreach。 5/. edit 如果您有问题,您对简单算法的实现有疑问。