java实现1、2、2、3、4、5排列问题
2015-04-12 23:26
309 查看
用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;
}
}
结果图:
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实现
- Java 非递归实现的排列组合中的平均分组问题
- java实现全排列问题
- java实现全排列问题
- java实现全排列问题(含相等元素)
- java实现多个文件中数据去重问题并按升序排列
- java 实现的用递归法实现全排列问题
- 字符串全排列问题 java语言实现
- 算法java实现--回溯法--圆排列问题--排列树
- java实现八皇后的排列问题
- 多个数组间元素排列组合问题求解(Java实现)
- Cantor展开、全排列问题、魔板问题(JAVA实现)
- java实现字符串排列组合问题
- java实现字符串排列组合问题
- 多个数组间元素排列组合问题求解(Java实现) 标签: 递归排列组合循环
- 排列问题java实现
- N皇后问题的Java实现
- 生产者/消费者问题的多种Java实现方式
- java实现ssh登录执行shell命令及一些问题。
- java连接redis,实现订阅发布遇到的问题