昨天我们结束了二叉树的刷题,从今天起开始了回溯算法的刷题,今天是一道基础的回溯题目。
77.组合
思路
使用回溯算法。
代码实现
class Solution {
private:
vector<vector<int>> res;
vector<int> path;
void backtracking(int n, int k, int cur)
{
if(path.size()==k)
{
res.push_back(path);
return ;
}
for(int i = cur; i <= n-(k-path.size())+1 ; i ++)
{
path.push_back(i);
backtracking(n , k, i+1);
path.pop_back();
}
}
public:
vector<vector<int>> combine(int n, int k) {
backtracking(n , k, 1);
return res;
}
};
收获
回溯backtracking的时候要用i+1,一开始错误的想成了cur+1,其实是不对的。