C++ 实现"1234567"的全排列

来源:互联网 发布:交通数据分析 编辑:程序博客网 时间:2024/05/04 02:09
方法1:
  1. #include<stdio.h>
  2. char c[9];
  3. int x,j,k;
  4. int main(int i){
  5. for(i=35280;i--;)
  6. if(j=i%7,c[j+1]=j+49,!j){
  7. for(x=7,j=720;x-1;j/=--x)*c=c[x],c[x]=c[k=i/7/j%x+1],c[k]=*c;puts(c+1);
  8. }
  9. return 0;
  10. }

 

方法2:

 

  1. #include<algorithm>
  2. #include<stdio.h>
  3. int main(){
  4. char a[]="1234567";
  5. do{
  6. puts(a);
  7. }
  8. while(std::next_permutation(a,a+7));
  9. }

方法3:

  1. #include<stdio.h>
  2. main(){
  3. int i,j,k,t;
  4. for(i=0;i<7654322;i++){
  5. t=i;
  6. j=k=0;
  7. for(;j<7;j++,t/=10)
  8. k|=1<<t%10;
  9. if(k==254)
  10. printf("%d/n",i);
  11. }
  12. }

方法4:

  1. #include<algorithm>
  2. #include<stdio.h>
  3. main(){for(char a[]="1234567";
  4. puts(a),std::next_permutation(a,a+7););}