String [] a = new String[]{"a1","a2","a3","a4","a5"};
String [] b = new String[]{"b1","b2","b3","b4","b5","b6"};
String [] c = new String[]{"c1","c2","c3","c4"};
String [] d = new String[]{"d1","d2","d3","d4"};
List list = new ArrayList();
list.add(a);
list.add(b);
list.add(c);
list.add(d);
现在无法确定list里面有几条数据,可能是1条,也可能是10条
计算出有多少种组合  
类似   
a1 a1b1 a1b2 a1b3 a1b4 a1b5 a1b6 a1b1c1 a1b2c1 a1b3c1... a1b1c1d1....
a2 a2b1 a2b2 a2b3 a2b4 a2b5 a2b6
a3........
...
b1 b1c1 b1c2 b1c3 b1c4 ... b1c1d1... 
b2 b2c1 b2c2.......
...  算法

解决方案 »

  1.   

    public static void main(String[] args) {
      ArrayList<ArrayList> a=new ArrayList<ArrayList>();
      ArrayList<String> b=new ArrayList<String>();
      b.add("a");
      b.add("b");
      b.add("c");
      b.add("d");
      a.add(b);
      ArrayList<String> b1=new ArrayList<String>();
      b1.add("a1");
      b1.add("b1");
      b1.add("c1");
      a.add(b1);
      ArrayList<String> b2=new ArrayList<String>();
      b2.add("a2");
      b2.add("b2");
      b2.add("c2");
      b2.add("d2");
      a.add(b2);
      ArrayList<String> bb=new ArrayList<String>();
       bb=select(a,bb,0);
       for(int j=0;j<bb.size();j++){
        System.out.println(bb.get(j));
       } }
     public static ArrayList<String> select(ArrayList<ArrayList> a2,ArrayList<String> bb,int k){
      ArrayList<String> a=new ArrayList<String>();
      ArrayList<String> b=new ArrayList<String>();
      int h=k;
      int s=a2.size();
      if(h==s){
       return bb;
      }
      a=a2.get(k);
      b=bb;
      int hh=b.size();
      if(k!=0){
       for(int j=0;j<hh;j++){
        String o=b.get(j);
        for(int i=0;i<a.size();i++){
         if(i==0){
          bb.set(j, o+a.get(i));
         }else{
          bb.add(o+a.get(i));
         }
        }
       }
      }else{
       bb=a2.get(0);
      }
      return select(a2,bb,h+1);
     }试试吧
      

  2.   

    这种写法不能得出所有的排列组合
    String [] a = new String[]{"a1","a2","a3","a4","a5"};
     String [] b = new String[]{"b1","b2","b3","b4","b5","b6"};
     String [] c = new String[]{"c1","c2","c3","c4"};
     String [] d = new String[]{"d1","d2","d3","d4"};
     组合里面a,b,c,d每个数组里面只能取一个值
    不能存在a1a2   b1b2得出来的值应该是这样的
    a1 a1b1 a1b2 a1b3 a1b4 a1b5 a1b6 a1b1c1 a1b2c1 a1b3c1... a1b1c1d1....
     a2 a2b1 a2b2 a2b3 a2b4 a2b5 a2b6
     a3........
     ...
     b1 b1c1 b1c2 b1c3 b1c4 ... b1c1d1... 
     b2 b2c1 b2c2.......
     ...   
      

  3.   

    public static void main(String[] args) {
    List<Integer> sizeList = new ArrayList<Integer>();
    sizeList.add(5);
    sizeList.add(6);
    sizeList.add(4);
    System.out.println(getTotalNumber(sizeList));
    } public static int getTotalNumber(List<Integer> sizelist) {
    int length = sizelist.size();
    int lastSize = sizelist.get(length - 1); if (length == 1)
    return lastSize; sizelist.remove(length - 1);
    return getNewSize(sizelist) * lastSize + lastSize + getTotalNumber(sizelist);
    } public static int getNewSize(List<Integer> sizelist) {
    int newSize = 0;
    int count = 1;
    int length = sizelist.size();
    for (int i = length - 1; i >= 0; i--) {
    count *= sizelist.get(i);
    newSize += count;
    }
    return newSize;
    }
    计算全部组合的个数,递归嘛
      

  4.   

    每个String[]里都加上一个空字符串,然后四重循环就可以了。
      

  5.   

    现在是不知道 String[] 数组到底有多少个
    可能有10个,也可能是50个 
      

  6.   

    自己好好看看再说
    我用的是
     ArrayList<String> b=new ArrayList<String>();
      b.add("a");
      b.add("b");
      b.add("c");
      b.add("d");
      a.add(b);
      ArrayList<String> b1=new ArrayList<String>();
      b1.add("a1");
      b1.add("b1");
      b1.add("c1");
    你就不会把里面的值换一下
      

  7.   

    换成这样不就好了?
    ArrayList<String> b=new ArrayList<String>();
      b.add("a1");
      b.add("a2");
      b.add("a3");
      b.add("a4");
      a.add(b);
      ArrayList<String> b1=new ArrayList<String>();
      b1.add("b1");
      b1.add("b2");
      b1.add("b3");
      b1.add("b4");
      a.add(b1);
      ArrayList<String> b2=new ArrayList<String>();
      b2.add("c1");
      b2.add("c2");
      b2.add("c3");
      b2.add("c4");
      a.add(b2);
      ArrayList<String> b3=new ArrayList<String>();
      b3.add("d1");
      b3.add("d2");
      b3.add("d3");
      b3.add("d4");
      a.add(b3);