仅仅自己思路整理
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 16;
int n;
int st[N] ;//状态数组 1.选了 2.不选 0.还未选
void dfs(int u)//确定方案内部
{
if(u>n){
for(int i =1;i<=n;i++){
if(st[i]==1)
printf("%d ", i);
}
printf("\n");
return;
}
st[u] = 2;//不选的状态
dfs(u+1);
st[u] = 0;//恢复到没选的状态
st[u] = 1;//选的状态
dfs(u+1);
st[u] = 0;//下同
}
int main(){
cin>>n;
dfs(1);
return 0;
}