数组中取N个值相加等于某个固定值的所有组合

惹事生妃 2019-09-01 04:48:26
例如
一组数[1,2,3,4,5,6,7,9,10]
计算所有相加值等于12的所有组合
3,9
2,10
2,3,5
6,4,2
1,2,3,6
1,2,4,5
...全文
2903 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gga782a 2019-09-12
  • 打赏
  • 举报
回复
自己优化思路大概就是这样
gga782a 2019-09-12
  • 打赏
  • 举报
回复
gga782a 2019-09-12
  • 打赏
  • 举报
回复
$arr = [1,2,3,4,5,6,7,8,9,10]; $sum = 12; $len = count($arr); $data = []; function s($arr,&$data=[],$i=0,$length=0){ $len = count($data); for($j=$length;$j<$len;$j++){ foreach($arr as $k=>$v){ if($k+$i+1<count($arr)){ $str = $arr[$k+$i+1]; $sa = explode(',',$data[$j]); foreach($sa as $item){ if($item > $str){ continue 2; } } if(in_array($str,$sa)){ continue; }else{ if(implode(",",$sa) == ""){ continue; }else{ $s = implode(",",$sa).",".$str; $data[] = $s; } } }else{ break; } } } $i++; if($i>count($arr)){ return $data; }else{ return s($arr,array_unique($data),$i,$len); } } echo "<pre >"; $data = s($arr,$arr); //帅选满足条件的数组 function gf($data,$sum) { echo count($data)."--c<br />"; $newData = []; foreach($data as $k=>$v){ $a = explode(",",$v); $sums = array_sum($a); //echo $sums."<br />"; if($sums == $sum){ $newData[] = $v; }else{ continue; } } return $newData; } echo "<pre >"; $datas = gf($data,$sum); var_dump($datas); 自己组装成一个函数吧 这是考验 最难的都解决了

20,398

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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