首页 > 代码库 > 2014-1

2014-1

 1 #include <stdio.h> 2  3 int main() 4 { 5     int n,i , j, a[100], a1[100]; 6     while(scanf("%d", &n) == 1) 7     { 8         for(i = 0; i<n; i++) 9         {10             scanf("%d", &a1[i]);11         }12 13         for (i = n-1; i>0; i--)14         {15             for (j = 0; j<i; j++)16             {17                 if (a1[j] > a1[j+1])18                 {19                     int t;20                     t = a1[j];21                     a1[j] = a1[j+1];22                     a1[j+1] = t;23                 }24             }25         }26         print_permutation(a, a1, n, 0);27     }28 }29 30 void print_permutation(int *a, int *a1, int n, int cur)31 {32     int i;33     if (cur == n)34     {35         for (i = 0; i<n; i++)36         {37             printf("%d ", a[i]);38         }39 40         printf("\n");41     }42     else43     {44         for (i = 0; i<n; i++)45         {46             int j, ok = 1;47             for (j = 0; j<cur; j++)48             {49                 if (a[j] == a1[i])50                 {51                     ok = 0;52                     break;53                 }54             }55 56             if (ok)57             {58                 a[cur] = a1[i];59                 print_permutation(a, a1, n, cur+1);60             }61         }62     }63 }

 

 

 1 #include <stdio.h> 2  3 int main() 4 { 5     int n,i , j, a[100], a1[100]; 6     while(scanf("%d", &n) == 1) 7     { 8         for(i = 0; i<n; i++) 9         {10             scanf("%d", &a1[i]);11         }12 13         for (i = n-1; i>0; i--)14         {15             for (j = 0; j<i; j++)16             {17                 if (a1[j] > a1[j+1])18                 {19                     int t;20                     t = a1[j];21                     a1[j] = a1[j+1];22                     a1[j+1] = t;23                 }24             }25         }26         print_permutation(a, a1, n, 0);27     }28 }29 30 void print_permutation(int *a, int *a1, int n, int cur)31 {32     int i;33     if (cur == n)34     {35         for (i = 0; i<n; i++)36         {37             printf("%d ", a[i]);38         }39 40         printf("\n");41     }42     else43     {44         for (i = 0; i<n; i++)45             if( !i || a1[i]!=a1[i-1])46         {47             int j, c1 = 0, c2  =0, ok = 1;48             for (j = 0; j<cur; j++) if (a[j] == a1[i]) c1++;49             for (j = 0; j<n; j++) if (a1[j] == a1[i]) c2++;50             if (c1<c2)51             {52                 a[cur] = a1[i];53                 print_permutation(a, a1, n, cur+1);54             }55         }56     }57 }

 

2014-1