数据算法问题

helodd 2020-12-17 11:23:22
10行记录
id 数量
001 5
002 8
003 20
004 35
005 41
006 2
007 15
008 10
009 9

如何取出 10 行记得中的任意行,数量合计 为 50 ?方法不限。
...全文
67 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
horizon_zpy 2020-12-18
  • 打赏
  • 举报
回复
不错,递归遍历,这种不知道最大能处理多少数据?
下雨的声音丶 2020-12-17
  • 打赏
  • 举报
回复


function getSumNum($arr , $total)
{
    sort($arr);
    $result = [];
    while (($value = array_shift($arr)) !== null){
        if ($value < $total) {
            $res = getSumNum($arr, $total - $value);
            if ($res) {
                $res = array_map(function ($v) use ($value){
                    array_unshift($v, $value);
                    return  $v;
                }, $res);
                $result = array_merge($result, $res);
            }
        } elseif ($value == $total) {
            $result[] = [$value];
        } else {
            break;
        }
    }
    return $result;
}
$_arr = array(5, 8, 20, 35, 41, 2, 15, 10, 9);
$data = getSumNum($_arr, 50);
array_map(function ($v){
    var_dump(implode(',', $v));
}, $data);
结果: string(11) "2,5,8,15,20" string(8) "2,5,8,35" string(10) "5,10,15,20" string(7) "5,10,35" string(4) "9,41" string(5) "15,35" 肯定不是最优的。有最优的还请分享一下

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧