六个数 1,2,2,3,4,5
1,5不相邻
第四个不能是3
用算法表示出它的所有可能的排列组合
java 代码
- package test;
- public class NewCalc {
- public NewCalc() {
- // TODO Auto-generated constructor stub
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int[] initInt = {1,2,2,3,4,5};
- NewCalc nc = new NewCalc();
- nc.printData(initInt);
- }
- private void printData(int[] initInt)
- {
- int p0,p1,p2,p3,p4,p5;
- int count = 0;
- for(int a=0;a<initInt.length;a++)
- {
- p0 = initInt[a];
- //System.out.println("p0 = " + p0);
- int initInt1[] = removeData(initInt, a);
- for(int b=0;b<initInt1.length;b++)
- {
- p1 = initInt1[b];
- if(p0*p1 == 5)
- continue;
- int[] initInt2 = removeData(initInt1, b);
- for(int c=0;c<initInt2.length;c++)
- {
- p2 = initInt2[c];
- if(p1*p2 == 5)
- continue;
- int initInt3[] = removeData(initInt2, c);
- for(int d=0;d<initInt3.length;d++)
- {
- p3 = initInt3[d];
- if(p2*p3 == 5 || p3 == 3)
- continue;
- int initInt4[] = removeData(initInt3, d);
- for(int e=0;e<initInt4.length;e++)
- {
- p4 = initInt4[e];
- if(p3*p4 == 5)
- continue;
- int initInt5[] = removeData(initInt4, e);
- for(int f=0;f<initInt5.length;f++)
- {
- p5 = initInt5[f];
- if(p4*p5 == 5)
- continue;
- System.out.println("" + p0 + "" + p1 + "" + p2 + "" + "" + p3 + "" + p4 + "" + p5);
- count++;
- //initInt = removeData(initInt, f);
- }
- }
- }
- }
- }
- }
- System.out.println("the quantity of these data is " + count);
- }
- private int[] removeData(int[] oldData, int i)
- {
- int j[] = new int[oldData.length -1];
- for(int k = 0,l = 0; k < oldData.length; k++)
- {
- if(i != k)
- {
- j[l] = oldData[k];
- l++;
- }
- }
- return j;
- }
- }