#include<bits/stdc++.h>
using namespace std;
bitset<12> vis;//相当于bool
int a[12];
int n;
void dfs(int dep){//depth深度
if(dep == n + 1){//当深度进行到n+1代表这一条路径走完,开始输出
for(int i = 1; i <= n; i++)
{
printf("%5d",a[i]);
if(i == n) cout << '\n';
}
return;
}
for(int i = 1; i <= n; i++){
if(vis[i] == 1) continue;
//若已经被搜索过则跳过
vis[i] = true;
//dfs,启动!
a[dep] = i;
dfs(dep + 1);//往深处搜索
vis[i] = false;//搜完了,重置
}
return ;
}
int main(){
cin >> n;
dfs(1);//从一开始深度搜索
return 0;
}
注意这个 return 它的作用不是返回主函数,而是返回上一级的dfs函数 例:如果此时是 dfs(5),遇到这个 return 就会回到上一级的 dfs函数 也就是dfs(4)