AC,仅供参考
```cpp
#include<bits/stdc++.h>
using namespace std;
const int MAX=1e4;
int num[MAX],n;
bool flag[MAX];
void s(int idx){
if(idx==n+1){
for(int i=1;i<=n;i++){
cout<<" "<<num[i];
}
cout<<'\n';
}
for(int i=1;i<=n;i++){
if(flag[i]==false){
num[idx]=i;
flag[i]=true;
s(idx+1);
flag[i]=false;
}
}
}
int main(){
cin>>n;
s(1);
return 0;
}
```
by 3_14 @ 2024-03-27 22:07:15
```
#include<bits/stdc++.h>
using namespace std;
int n,a[105],b[105],cnt,r;
void dfs(int k){//有几个格子填,填什么
if(k>n){
cnt++;
for(int j=1;j<k;j++){
cout<<setw(5)<<a[j]<<setw(5);
}
cout<<endl;
return ;
}
for(int i=1;i<=n;i++){
if(!b[i]){//如果i没用
b[i]=1;//标记i使用过
a[k]=i;//i填入第k个格子
dfs(k+1);//填下一个
b[i]=0;//标记i没使用过
}
}
}
int main(){
cin>>n;
dfs(1);//从1开始
return 0;
}
```
### 有注释的更好理解!!
by Sizeof_cpp @ 2024-03-27 22:16:59
@[C2959668672](/user/1177895) 你把前面那串ios注释掉就好了 解绑那玩意再混用cin和printf会炸掉 亲测ac
by sading @ 2024-03-27 22:31:25
@[sading](/user/957279)
不是混用那两个罢?我记得输入和输出内部分别统一就行了。是他输出的时候混用了导致的罢。
by DoraYaoxy @ 2024-03-27 22:35:05
@[DoraYaoxy](/user/612567) 噢噢是的 还是我学太少了qwq
by sading @ 2024-03-27 22:41:37
@[DoraYaoxy](/user/612567) 的确是这样,厉害
by C2959668672 @ 2024-03-28 19:20:28