思路:dfs参数当前是第几个数,已经选择了几个数;搜索到n+1即可;所以当u>n+1时就返回,此外若在满足条件的情况下
cnt==m 了就把答案输出,这个也需要返回。
#include<iostream>
#include<vector>
using namespace std;
int n,m;
vector<int> ans;
void dfs(int u,int cnt)
{
if(u>n+1)return;
if(cnt==m){
for(int i=0;i<ans.size();++i)cout<<ans[i]<<" ";
cout<<endl;
return;
}
ans.push_back(u);
dfs(u+1,cnt+1);
ans.pop_back();
dfs(u+1,cnt);
}
int main()
{
cin>>n>>m;
dfs(1,0);
return 0;
}