算法1
思路:dfs
C++ 代码
#include<iostream>
#include<cstdio>
using namespace std;
const int N=10;
int n;
bool used[N];//true表示用过,false表示没用过
int st[N];//0表示没放数,1表示放过
void dfs(int u){
if(u>n){
for(int i=1;i<=n;i++) printf("%d ",st[i]);
puts("");
return;
}
for(int i=1;i<=n;i++){
if(!used[i]){
st[u]=i;
used[i]=true;
dfs(u+1);
st[u]=0;//恢复现场
used[i]=false;
}
}
}
int main(){
scanf("%d",&n);
dfs(1);
return 0;
}