77. 组合
https://leetcode.cn/problems/combinations/
算法思想:
采用回溯的方法进行实现。
其实回溯本质上是很多层for循环的实现,每一层都是一个for循环。
递归完整之后,记得pop出来元素。
可以加上个减枝的操作。
class Solution {
public:
vector<vector<int>> allpath;
vector<int> path;
void huisu(int n, int k, int start)
{
if(path.size()==k)
{
allpath.push_back(path);
return;
}
for(int i=start;i<=(n-(k-path.size()))+1;i++)
{
path.push_back(i);
huisu(n,k,i+1);
path.pop_back();
}
}
vector<vector<int>> combine(int n, int k) {
huisu(n,k,1);
return allpath;
}
};