Leetcode:组合

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Leetcode:组合脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

回溯法代码框架

vector<int> temp;
void dfs(int cur, int n) {
    if (cur == n + 1) {
        // 记录答案
        // ...
        return;
    }
    // 考虑选择当前位置
    temp.push_back(cur);
    dfs(cur + 1, n, k);
    temp.pop_back();
    // 考虑不选择当前位置
    dfs(cur + 1, n, k);
}

回溯法与二叉树的深度优先遍历异曲同工

Leetcode:组合

class Solution {
public:
	void backtrack(vector<vector<int>> &result,vector<int> &ans,int num,int n,int k){
		if(ans.size()+(n-num+1)<k){
			return;
		}
		if(ans.size()==k){
			result.push_back(ans);
			return;
		}
		ans.push_back(num);
		//子结果的控制因素,如确定vector的起始元素是1、2,在后面变化元素防止重复 
		backtrack(result,ans,num+1,n,k);
		ans.pop_back();
		//在把末尾的元素弹出后,需要继续加入新元素,所以这里要加一个回溯 
		backtrack(result,ans,num+1,n,k);
	}
    vector<vector<int>> combine(int n, int k) {
		vector<vector<int>> result;
		vector<int> ans;
		backtrack(result,ans,1,n,k);
		return result;
    }
};

脚本宝典总结

以上是脚本宝典为你收集整理的Leetcode:组合全部内容,希望文章能够帮你解决Leetcode:组合所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: