题目:
打印排列(一)
描述
给定一个正整数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;