给定一整数n(1<n<9) 求1-n的全排列 用穷举法 效率不是很好!

/**
  * 给定一整数n(1<n<9) 求1-n的全排列        用穷举法  效率不是很好!
  *
  */
 public void testhh(){
  while(true){
  Scanner in = new Scanner(System.in);
  int n = in.nextInt();
  if(n == 3){
    ff3(n);
   }else if(n == 4){
    ff4(n);
   }else if(n == 2){    
    ff2(n);
   }else if(n == 5){
    ff5(5);
   }else if(n == 6){
    ff6(6);
   }else if(n == 7){
    ff7(n);
   }else if(n == 8){
    ff8(n);        
  }else {
   System.out.print("您输入的数不在(1<n<9)内,请重新输入:");  
  }
 }
 } 
 
 
 
 public void ff2(int n) {
   for(int i = 1;i<=n;i++)   
    for(int k = 1;k<=n;k++)
    {
       if(i==k)
         continue;
    else
      System.out.println(i*10+k);
    }  
   }
 
 
 public void ff3(int n) {
    for(int i = 1;i<=n;i++)
     for(int j = 1;j<=n;j++)
     for(int k = 1;k<=n;k++)
     {
        if(i==j || i==k || j==k)
          continue;
     else
       System.out.println(i*100+j*10+k);
     }  
    }
  
 public void ff4(int n) {
    for(int i = 1;i<=n;i++)
     for(int j = 1;j<=n;j++)
      for(int a = 1;a<=n;a++)
     for(int k = 1;k<=n;k++)
     {
        if(i==j || i==k || j==k || a==j || a==k || a==i)
          continue;
     else
       System.out.println(i*1000+j*100+k*10+a);
     }   
    }
 
 public void ff5(int n) {
   for(int i = 1;i<=n;i++)
    for(int j = 1;j<=n;j++)
     for(int a = 1;a<=n;a++)
      for(int b = 1;b<=n;b++)
    for(int k = 1;k<=n;k++)
    {
       if(i==j || i==k || j==k || a==j || a==k || a==i || b==i || b==j || b==k || b==a)
         continue;
    else
      System.out.println(b*10000+i*1000+j*100+k*10+a);
    }   
   }
 
 public void ff6(int n) {
   for(int i = 1;i<=n;i++)
    for(int j = 1;j<=n;j++)
     for(int a = 1;a<=n;a++)
      for(int b = 1;b<=n;b++)
       for(int c = 1;c<=n;c++)
    for(int k = 1;k<=n;k++)
    {
       if(i==j || i==k || j==k || a==j || a==k || a==i || b==i || b==j || b==k || b==a || c==i || c==j
         || c==k || c==a || c==b)
         continue;
    else
      System.out.println(c*100000+b*10000+i*1000+j*100+k*10+a);
    }   
   }
 
 public void ff7(int n) {
   for(int i = 1;i<=n;i++)
    for(int j = 1;j<=n;j++)
     for(int a = 1;a<=n;a++)
      for(int b = 1;b<=n;b++)
       for(int c = 1;c<=n;c++)
        for(int d = 1;d<=n;d++)
    for(int k = 1;k<=n;k++)
    {
       if(i==j || i==k || j==k || a==j || a==k || a==i || b==i || b==j || b==k || b==a || c==i || c==j
         || c==k || c==a || c==b || d==i || d==j || d==k || d==a || d==b || c==d )
         continue;
    else
      System.out.println(d*1000000+c*100000+b*10000+i*1000+j*100+k*10+a);
    }   
   }
 
 
 public void ff8(int n) {
   for(int i = 1;i<=n;i++)
    for(int j = 1;j<=n;j++)
     for(int a = 1;a<=n;a++)
      for(int b = 1;b<=n;b++)
       for(int c = 1;c<=n;c++)
        for(int d = 1;d<=n;d++)
         for(int e = 1;e<=n;e++)
    for(int k = 1;k<=n;k++)
    {
       if(i==j || i==k || j==k || a==j || a==k || a==i || b==i || b==j || b==k || b==a || c==i || c==j
         || c==k || c==a || c==b || d==i || d==j || d==k || d==a || d==b || c==d || e==i || e==j
         || e==k || e==a || e==b || e==c || e==d)
         continue;
    else
      System.out.println(e*10000000+d*1000000+c*100000+b*10000+i*1000+j*100+k*10+a);
    }   
   }
 
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值