php - 如果最大值只能是 30,如何组合数组中的值?
问题描述
我试图通过添加它们来组合数组中的数字,以便最大值只能是 30。
例如,这是我的数组:
array(10,30,10,10,15);
将数组中的数字组合到最大值为 30 的项目后,结果应为:
array(30,30,15);
如何做到这一点?
解决方案
我试图通过添加它们来组合数组中的数字,以便最大值只能是 30
因此,当您组合数字时,您可以在数组中实现尽可能低的一组值,并通过以下方式确保最大值保持 30:
- 首先,对它们进行排序。
- 其次,继续向 sum 添加元素,直到总和 > 30。
- 第三,一旦某个元素不能再添加到总和中,请将当前总和添加到数组中,并将当前元素作为新总和。
代码:
<?php
$arr = array(10,30,10,10,15);
sort($arr);
$res = [];
$curr_sum = 0;
foreach($arr as $each_value){
if($curr_sum + $each_value <= 30) $curr_sum += $each_value;
else{
$res[] = $curr_sum;
$curr_sum = $each_value;
}
}
$res[] = $curr_sum;
print_r($res);
更新:如果数字的顺序很重要,看到您当前的输出,您可以使用rsort()以降序显示它们。
rsort($res);
推荐阅读
- javascript - 在 javascript 数组中均匀分布元素
- javascript - NodeJS - 从 Readdirp 中获取数据
- angular - angular-cli - 模拟缓慢的 HTTP 响应
- c# - 有没有办法通过单击触发 Blazor 中的两个连续事件?
- javascript - PWA 服务工作者在 Firefox 中不起作用
- wordpress - Woocommerce REST API 自动/woocommerce:302 重定向到 www.* 查询
- pandas - 如何从 1 列制作三个不同的虚拟列?
- sql - 如何基于特定的、相同的列值进行聚类
- javascript - 刷新网页后,我的 blob 值如何变化?
- python - Python - 识别连续 0 组并替换它们