日期:2014-05-18  浏览次数:20786 次

数组排列组合
在不知道有多少个数组   一个数组有多少个数的情况进行排列组合
比如   String[]   s1={ "aa ", "bb ", "cc "};
          String[]   s2={ "11 ", "22 ", "33 "];
          String[]   s3={ "AA ", "BB ", "CC "};
我要得到的结果为:aa11AA,aa11BB,aa11cc,aa22AA,aa22BB,aa22CC,aa33AA,aa33BB,aa33CC
                                    bb11AA,bb11BB,bb11cc,bb22AA,bb22BB,bb22CC,bb33AA,bb33BB,bb33CC                          
                                    cc11AA,cc11BB,cc11cc,cc22AA,bb22BB,cc22CC,cc33AA,cc33BB,cc33CC

上面的实例是3个数组   但是我要的是在不随即个数组   一个数组是随机个值的情况下排列出来

请教各位高人指点
源代码   和实现思路都行。



------解决方案--------------------
靠,不会用java代码,就这么地吧

main(){
String[] arr1 = {"aa","bb"};
String[] arr2 = {"11","22"};
String[] arr3 = {"xx","yy","zz"};
List<String[]> list = new ArrayList<String[]>();
list.add(arr1);
list.add(arr2);
list.add(arr3);
test(list,arr1,"");
}
test(List<String[]> list,String[] arr,String str){
//迭代list
for(int i=0;i<list.size();i++){
//取得当前的数组
if(i==list.indexOf(arr)){
//迭代数组
for(String st : arr){
st = str + st ;
if(i<list.size()-1){
test(list,list.get(i+1),st);
}else if(i==list.size()-1){
System.out.println(st);//这里就是需要的组合
}else{
continue;
}
}
}
}
}
有冗余的地方,还有些判断,你自己看看,加上去,代码有问题的话希望指出来