next_permutation
1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 using namespace std; 5 6 int perm[1005]; 7 //生成1~n的n!种排列 8 void permutation(int n) 9 { 10 for(int i=1;i<=n;i++) 11 { 12 perm[i]=i; 13 } 14 do 15 { 16 for(int j=1;j<=n;j++) 17 { 18 printf("%d ",perm[j]); 19 } 20 printf("\n"); 21 }while(next_permutation(perm+1,perm+n+1)); 22 return ; 23 } 24 25 int main() 26 { 27 int n; 28 while(scanf("%d",&n)!=EOF) 29 { 30 permutation(n); 31 } 32 return 0; 33 } 34 35 //手写 生成p~n的全排列 36 37 /*bool used[1005]; 38 int perm[1005]; 39 int P; 40 41 void permutation(int pos,int n) 42 { 43 if(pos==n+1) 44 { 45 for(int j=P;j<=n;j++) 46 { 47 printf("%d ",perm[j]); 48 } 49 printf("\n"); 50 } 51 52 for(int i=P;i<=n;i++) 53 { 54 if(!used[i]) 55 { 56 perm[pos]=i; 57 used[i]=true; 58 permutation(pos+1,n); 59 used[i]=false; 60 } 61 } 62 63 return ; 64 } 65 66 int main() 67 { 68 int N; 69 while(scanf("%d %d",&P,&N)!=EOF) 70 { 71 for(int i=P;i<=N;i++) 72 used[i]=false; 73 permutation(P,N); 74 } 75 return 0; 76 }*/