求一个排列组合算法的思路

kenshu 2013-01-27 04:02:08
多个数组(数组个数不定),每个数组中有几个数字,从各个数组中各抽一个数字出来,可以形成一个排列,需要输出所有排列的可能:

比如,
数组一: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,3

select A.a , B.b , C.c , D.d
from A,B,C,D//没有where条件

就是这种输出.
...全文
142 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kenshu 2013-01-27
  • 打赏
  • 举报
回复
SORRY,没打完就按了提交。 StringArray lc;//用于输出 先存入第一个数组中的内容 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" }
kenshu 2013-01-27
  • 打赏
  • 举报
回复
引用 2 楼 c1997sdn 的回复:
怎么解决的?求答案。
我用的办法比较笨,因为对效率要求很低。 用一个StringArray 存放结果。 StringArray lc; 先存入第一个数组中的内容 lc.Add("1"); lc.Add("2"); for (i = 1/*这里是1不是0*/;i<数组个数;i++){ for (j = 1/*同样是1*/;j<数组[i]的元素个数;j++){ }
kenshu 2013-01-27
  • 打赏
  • 举报
回复
引用 3 楼 stjay 的回复:
不就是4次循环么? C/C++ code ? 1234567891011121314 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 ++) { f……
没办法4次循环,主要是数组个数不定.
jimette 2013-01-27
  • 打赏
  • 举报
回复
说说 原因
stjay 2013-01-27
  • 打赏
  • 举报
回复
不就是4次循环么?
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]);
}
}
}
}
c1997sdn 2013-01-27
  • 打赏
  • 举报
回复
怎么解决的?求答案。
kenshu 2013-01-27
  • 打赏
  • 举报
回复
已解决,谢谢!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧