用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;
}
}
结果图:

这篇博客探讨了如何使用Java实现一个主函数,来生成特定约束下的数字排列,如1、2、2、3、4、5。程序通过迭代和回调方法避免了'4'出现在第三位以及'3'和'5'相邻的情况。博客中提供了详细的代码示例,展示了如何遍历并打印所有可能的合法排列组合。
1637

被折叠的 条评论
为什么被折叠?



