【算法-Java实现】组合总和
一.问题描述:
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。
比如:
输入:[2,3,6,7];输出:[[7], [2, 2, 3]]
输入:[3,4,5,6,7,8,9];输出:[[8], [4, 4], [3, 5]]
本题来源:力扣39
二.问题解答:
思路:搜索回溯
递归函数结构体:
dfs(int[] candidates,int target,List ans,List combine,int index)
candidates:输入的数组;
target:目标值;
ans:返回的结果;
combine:返回结果的子结果(可行解);
index:数组下标(从0开始进行递归)
使用递归,两种情况:
1.dfs( candidates, target, ans,combine,index+1):每一次递归都对index加1,接着进行递归;
递归终止条件:index==candidates.length;
2.对元素大小进行判断,若candidates[index]
进行递归:dfs(candidate

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/75517.html