#include<cstdio>
int s[30];
int flag[30];
void dfs(int step,int n){
if(step==n){ // 如果排列已排到第n个位置,即排满,输出
for(int i=0;i<step;i++)
printf("%3d",s[i]);
puts("");
}
else
for(int i=1;i<=n;i++){
if(flag[i]) continue;
flag[i]=1; // 标记已加入排列
s[step]=i; // 将这个数存入排列的第step位置
dfs(step+1,n);
flag[i]=0; // 从排列中消去
}
}
int main(){
int n;
while(~scanf("%d",&n))
dfs(0,n);
return 0;
}
全排列
最新推荐文章于 2025-03-10 22:27:24 发布