温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用php回溯算法计算组合总和

发布时间:2021-07-13 18:11:16 来源:亿速云 阅读:179 作者:chen 栏目:编程语言

本篇内容主要讲解“如何用php回溯算法计算组合总和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用php回溯算法计算组合总和”吧!

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用一次。

说明:

所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。

实例

输入: candidates = [10,1,2,7,6,1,5], target = 8,
所求解集为:[
 [1, 7],
 [1, 2, 5],
 [2, 6],
 [1, 1, 6]]

解题思路

直接参考回溯算法团灭排列/组合/子集问题。

代码

class Solution {
 
    /** * @param Integer[] $candidates * @param Integer $target * @return Integer[][] */
 
    public $res = [];
 
    function combinationSum2($candidates, $target) {
 
        sort($candidates);   // 排序
 
        $this->dfs([], $candidates, $target, 0);
 
        return $this->res;
 
    }
 
    function dfs($array, $candidates, $target, $start) {
 
        if ($target < 0) return;
 
        if ($target === 0) {
 
            $this->res[] = $array;
 
            return;
 
        }
 
        $count = count($candidates);
 
        for ($i = $start; $i < $count; $i++) {
 
            if ($i !== $start && $candidates[$i] === $candidates[$i - 1]) continue;
 
            $array[] = $candidates[$i];
 
            $this->dfs($array, $candidates, $target - $candidates[$i], $i + 1);//数字不能重复使用,需要+1
 
            array_pop($array);
 
        }
 
    }}

到此,相信大家对“如何用php回溯算法计算组合总和”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI