用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求: "4 "不能在第三位, "3 "与 "5 "不能相连.
class TestSort{
public static void main(String args[]){
int[] array={1,2,2,3,4,5};
int[] result={0,0,0,0,0,0};
int totle=callBack(array,result,0);
System.out.println("总数为:"+totle);
}
public static int callBack(int[] array,int[] result,int index){
if(index>=array.length){
for(int i=0;i<result.length;i++){
System.out.print(result[i]);
}
System.out.println();
return 1;
}
int size=0;
for(int i=0;i<array.length;i++){
if(array[i]==0){
continue;
}else if(index==2&&i==4){
continue;
}else if(index>0&&array[i]+result[index-1]==8){ //3+5则等于8
continue;
}else if(i==2&&array[1]>0){ //防止出现两次同样的情况,主要是有两个2
continue;
}else{
result[index]=array[i];
array[i]=0;
size=size+callBack(array,result,index+1);
array[i]=result[index]; //回调后要还原
}
}
return size;
}
}
结果图: