多个数组(数组个数不定),每个数组中有几个数字,从各个数组中各抽一个数字出来,可以形成一个排列,需要输出所有排列的可能:比如,
数组一:1,2
数组二:1,2
数组三:1
数组四:1,2,3所有可能是 2*2*1*3=12输出是:1,1,1,1
2,1,1,1
1,2,1,1
2,2,1,1
1,1,1,2
2,1,1,2
1,2,1,2
2,2,1,2
1,1,1,3
2,1,1,3
1,2,1,3
2,2,1,3求列出这种输出的思路--------------------跟数据库中多个表没有条件的连接是一样的,如
表A中有两行,1,2
表B中有两行,1,2
表C中有一行,1
表D中有三行,1,2,3select A.a , B.b , C.c , D.d
from A,B,C,D//没有where条件就是这种输出.
数组一:1,2
数组二:1,2
数组三:1
数组四:1,2,3所有可能是 2*2*1*3=12输出是:1,1,1,1
2,1,1,1
1,2,1,1
2,2,1,1
1,1,1,2
2,1,1,2
1,2,1,2
2,2,1,2
1,1,1,3
2,1,1,3
1,2,1,3
2,2,1,3求列出这种输出的思路--------------------跟数据库中多个表没有条件的连接是一样的,如
表A中有两行,1,2
表B中有两行,1,2
表C中有一行,1
表D中有三行,1,2,3select A.a , B.b , C.c , D.d
from A,B,C,D//没有where条件就是这种输出.
int a[2] = {1, 2};
int b[2] = {1, 2};
int c[1] = {1};
int d[3] = {1, 2, 3};for (int i = 0; i < 2; i ++) {
for (int j = 0; j < 2; j ++) {
for (int k = 0; k < 1; k ++) {
for (int l = 0; l < 3; l ++) {
print("%d,%d,%d,%d", a[i], b[j], c[k], d[l]);
}
}
}
}
我用的办法比较笨,因为对效率要求很低。用一个StringArray 存放结果。StringArray lc;
先存入第一个数组中的内容lc.Add("1");
lc.Add("2");for (i = 1/*这里是1不是0*/;i<数组个数;i++){
for (j = 1/*同样是1*/;j<数组[i]的元素个数;j++){}
先存入第一个数组中的内容lc.Add("1");
lc.Add("2");long ll_copys;
for (i = 1/*这里是1不是0*/;i<数组个数;i++){
ll_copys = lc.GetSize();
for (j = 1/*同样是1*/;j<数组[i]的元素个数;j++){
原样复制前ll_copys个原素到lc的后面
} //假定只有两个数组 //{1,2}
//{1,2,3} 做完上面这一步
lc中有6个元素
"1"
"2"
"1"
"2"
"1"
"2" 跟着在这6个元素上各加上第二个数组中的内容,变成
"11"
"21"
"12"
"22"
"13"
"23" }