很妙的dfs:记录层数以及前一个数是多少。
代码:
int ans[11];
int n,m;
void dfs(int u,int pre){
if(u==n+1){
for(int i=1;i<=n;i++)
cout<<ans[i]<<' ';
cout<<endl;
return;
}
for(int i=pre+1;i+(n-u)<=m;i++){
ans[u]=i;
dfs(u+1,i);
}
}
void solve(){
cin>>n>>m;
dfs(1,0);
}