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.......
... 算法
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.......
... 算法
解决方案 »
- session属性错乱了
- ext中如何上传文件?
- 天啊,救救我吧,很迷茫的ejb问题
- 关于hibernate的问题,请教!!!!
- Struts Validator 怎么验证密码和密码确认框输入的是一样的呢
- 有哪为大虾帮我解决一下这个JSP中文件目录的小问题啊?
- myeclipse database connect
- hibernate中one-to-many问题,在线等(晚上7点结贴)
- JB9如何新增mysql的JDBC驱动呢?,我的mysql驱动放在c:\JDBC里,请老大帮忙。
- 在Weblogic中配置JDBC连接池,用sqlserver2000做数据库.可不可以直接把驱动文件考到哪个目录下面,不用添加在classpath里
- 时间类型转换2013-07-30T23:00:00.999Z
- Java6 Webservice问题
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);
}试试吧
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.......
...
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;
}
计算全部组合的个数,递归嘛
可能有10个,也可能是50个
我用的是
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");
你就不会把里面的值换一下
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);