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

方法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););}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值