题意 给定n,k,返回1到n种任意k个数的组合序列。不能重复。
简直就是回溯的模板啊,直接上代码
class Solution {
public:
int a[30];
vector<vector<int>> ans;
vector<int> temp;
void find(int index,int num,int n,int k)
{
int i;
if(index>0) temp.push_back(num);
if(index==k)
{
ans.push_back(temp);
return;
}
for(i=num+1;i<=n;i++)
{
if(a[i]==0)
{
a[i]=1;
find(index+1,i,n,k);
a[i]=0;
temp.pop_back();
}
}
return;
}
vector<vector<int>> combine(int n, int k) {
int i,j;
for(i=0;i<30;i++) a[i]=0;
find(0,0,n,k);
return ans;
}
};