C++ 代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAX_N = 10000;
int state[MAX_N];// 0代表未选,1代表选择,2代表不选
int n;
void dfs(int u){
if(u>n){
for(int i=1;i<=n;i++){
if(state[i]==1){
printf("%d ",i);
}
}
printf("\n");
return;
}
state[u]=1;//选中
dfs(u+1);
state[u]=0;// 恢复现场
state[u]=2;//未选中
dfs(u+1);
state[u]=0;// 恢复现场
}
int main(){
scanf("%d",&n);
dfs(1);
return 0;
}