…
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
const int N=15;
int n;
bool st[N];
//st记录每一位数是否被用过了
int path[N];
//path数字记录状态(就是一个结果)
void dfs(int u){
if(u>n){
for(int i=1;i<=n;i++){
if(st[i]){
//输出时判断当前这一位数是否被用过
cout<<path[i]<<” “;
}
}
puts(“”);
return;
}
path[u]=u;//放置数字
st[u]=true;//标记该为放置过数字
dfs(u+1);//递归到下一层,就是开始考虑下一位数
st[u]=false;//回溯的时候恢复现场
dfs(u+1);//再接着递归下一种情况,就是当前位不放数
}
int main(){
cin>>n;
dfs(1);
return 0;
}
…