本帖最后由 wudigod12 于 2015-7-24 02:23 编辑
题1:用1、2、3、4这四个数字,用java写一个main函数打印出所有不同的排序,如:1234,1243等要求:“4”不能在第一位,“1”与“3”不能相连
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class test10 {
public static void main(String[] args){
List<Integer> list = Arrays.asList(1,2,3,4);
List<String> destList = fun("",list);
System.out.println(destList.size());
for(String str:destList){
System.out.println(str);
}
}
public static List<String> fun(String str,List<Integer> list){
List<String> destList = new ArrayList<String>();
if(list.size() == 0){
destList.add(str);
return destList;
}
for(Integer num:list){
String newStr = str + num;
List<Integer> newNumList = new ArrayList<Integer>();
newNumList.addAll(list);
newNumList.remove(num);
List<String> newDestList = fun(newStr,newNumList);
for(String newResult:newDestList){
if(!destList.contains(newResult))
if(!newResult.startsWith("4") && !newResult.contains("13") && !newResult.contains("31"))
destList.add(newResult);
}
}
return destList;
}
}
题2:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"和"5"不能相连
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class test10 {
public static void main(String[] args){
List<Integer> list = Arrays.asList(1,2,2,3,4,5);
List<String> destList = fun("",list);
System.out.println(destList.size());
for(String str:destList){
System.out.println(str);
}
}
public static List<String> fun(String str,List<Integer> list){
List<String> destList = new ArrayList<String>();
if(list.size() == 0){
destList.add(str);
return destList;
}
for(Integer num:list){
String newStr = str + num;
List<Integer> newNumList = new ArrayList<Integer>();
newNumList.addAll(list);
newNumList.remove(num);
List<String> newDestList = fun(newStr,newNumList);
for(String newResult:newDestList){
if(!destList.contains(newResult))
if(!(newResult.indexOf("4") == 2) && !newResult.contains("35") && !newResult.contains("53"))
destList.add(newResult);
}
}
return destList;
}
}
在百度上看到的代码,自己重写了一遍.
|
|