全排列

对输入的n个数做全排列

样例输入

3

1 2 3

输出

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

 1 /*
 2 1...n全排列,不计算是否有重复
 3 */
 4 #include<cstdio>
 5 #include<string.h>
 6 using namespace std;
 7 const int maxn = 100;
 8 
 9 int rcd[maxn],num[maxn],vis[maxn];
10 int n;
11 
12 int input(){
13     if(scanf("%d",&n)==EOF)
14         return 0;
15     memset(vis,0,sizeof(vis));
16     for(int i=0;i<n;i++)
17         scanf("%d",&num[i]);
18     return 1;
19 }
20 
21 
22 void full_permutation(int l){
23     int i;
24     if(l==n){
25         for(int i=0;i<n;i++){
26             printf("%d",rcd[i]);
27             if(i<n-1)
28                 printf(" ");
29         }
30         printf("\n"); return ;
31     }
32     for(int i=0;i<n;i++){
33         if(!vis[i]){
34             rcd[l]=num[i];
35             vis[i]=1;
36             full_permutation(l+1);
37             vis[i]=0;
38         }
39 
40     }
41 }
42 
43 int main(){
44    while(input())
45     full_permutation(0);
46     return 0;
47 }
View Code

 

 

posted on 2013-06-30 14:32  the unkown road  阅读(125)  评论(0)    收藏  举报

导航