写一个算法--其实很简单

六个数 1,2,2,3,4,5
1,5不相邻
第四个不能是3
用算法表示出它的所有可能的排列组合

java 代码
  1. package test;   
  2.   
  3. public class NewCalc {   
  4.   
  5.     public NewCalc() {   
  6.         // TODO Auto-generated constructor stub   
  7.     }   
  8.   
  9.     /**  
  10.      * @param args  
  11.      */  
  12.     public static void main(String[] args) {   
  13.         // TODO Auto-generated method stub   
  14.         int[] initInt = {1,2,2,3,4,5};   
  15.         NewCalc nc = new NewCalc();   
  16.         nc.printData(initInt);   
  17.   
  18.     }   
  19.   
  20.     private void printData(int[] initInt)   
  21.     {   
  22.         int p0,p1,p2,p3,p4,p5;   
  23.         int count = 0;   
  24.   
  25.         for(int a=0;a<initInt.length;a++)   
  26.         {   
  27.             p0 = initInt[a];   
  28.             //System.out.println("p0 = " + p0);   
  29.             int initInt1[] = removeData(initInt, a);   
  30.             for(int b=0;b<initInt1.length;b++)   
  31.             {   
  32.                 p1 = initInt1[b];   
  33.                 if(p0*p1 == 5)   
  34.                     continue;   
  35.                 int[] initInt2 = removeData(initInt1, b);   
  36.   
  37.                 for(int c=0;c<initInt2.length;c++)   
  38.                 {   
  39.                     p2 = initInt2[c];   
  40.                     if(p1*p2 == 5)   
  41.                         continue;   
  42.                     int initInt3[] = removeData(initInt2, c);   
  43.                     for(int d=0;d<initInt3.length;d++)   
  44.                     {   
  45.                         p3 = initInt3[d];   
  46.                         if(p2*p3 == 5 || p3 == 3)   
  47.                             continue;   
  48.                         int initInt4[] = removeData(initInt3, d);   
  49.                         for(int e=0;e<initInt4.length;e++)   
  50.                         {   
  51.                             p4 = initInt4[e];   
  52.                             if(p3*p4 == 5)   
  53.                                 continue;   
  54.                             int initInt5[] = removeData(initInt4, e);   
  55.                             for(int f=0;f<initInt5.length;f++)   
  56.                             {   
  57.                                 p5 = initInt5[f];   
  58.                                 if(p4*p5 == 5)   
  59.                                     continue;   
  60.                                 System.out.println("" + p0 + "" + p1 + "" + p2 + "" + "" + p3 + "" + p4 + "" + p5);   
  61.                                 count++;   
  62.                                 //initInt = removeData(initInt, f);   
  63.                             }   
  64.                         }   
  65.                     }   
  66.                 }   
  67.             }   
  68.         }   
  69.         System.out.println("the quantity of these data is " + count);   
  70.     }   
  71.     private int[] removeData(int[] oldData, int i)   
  72.     {   
  73.         int j[] = new int[oldData.length -1];   
  74.         for(int k = 0,l = 0; k < oldData.length; k++)   
  75.         {   
  76.             if(i != k)   
  77.             {   
  78.                 j[l] = oldData[k];   
  79.                 l++;   
  80.             }   
  81.         }   
  82.         return j;   
  83.     }   
  84.   
  85. }   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值