题目:
打印排列(一)
描述
给定一个正整数n, 按照递增顺序打印数字1到n的所有排列.
输入格式
一个整数n(1<=n<=7).
输出格式
按照递增的顺序输出n的所有排列, 详见样例.
输入样例
3
输出样例
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2
3 2 1
#include<stdio.h>
#include<string.h>
int vis[10];
int num[10];
int n;
void dfs(int x){
if(x==n+1){
for(int i=1;i<=n;i++){
printf("%d",num[i]);
if(i==n)printf("\n");
else printf(" ");
}
return ;
}
for(int i=1;i<=n;i++){
if(!vis[i]){
num[x]=i;
vis[i]=1;
dfs(x+1);
vis[i]=0;
}
}
}
int main(){
while(scanf("%d",&n)!=EOF){
memset(vis,0,sizeof(vis));
dfs(1);
}
}
for(int i=1;i<=step-2;i++)
{
cout<<hezi[i]<<" ";//不能多输出空格
}
cout<<hezi[step-1];
cout<<endl;