+ -
当前位置:首页 → 问答吧 → 算法问题求解。

算法问题求解。

时间:2011-06-27

来源:互联网

本帖最后由 forward_ding 于 2011-06-27 10:25 编辑

25个数组,每个数组可能有0个(空)、1个或多个元素(都是数字),现在想将此25个数组的元素进行排列,要求如下:
1、每次每个数组只提供一个元素且必须提供一个元素(数组为空就提供空);
2、每次排列的元素顺序按照数组出现的先后顺序(第一个数组提供的元素排在第一位,第二个数组提供的排在第二位,以此类推);并打印出来,如数组为空数组则不需要输出数值,以竖线为分隔符。例如:2|5|13800||||99|33|10086……|
3、重复1、2步,遍历每个数组的每个元素;

最笨的方法:用for循环,for  25次将它搞完;但是这样就有点太那个了吧(你懂的^_^),我一时还没想出好方法(考虑了一下递归,但感觉有点难下手),所以上来请教下大家,谢谢!

例如:
@"1"={1,2,3};
@"2"={4,5,6};
@"3"={6,7};

要求输出如下:
1|4|6
1|4|7
1|5|6
1|5|7
1|6|6
1|6|7
2|4|6
2|4|7
2|5|6
2|5|7
2|6|6
2|6|7
3|4|6
3|4|7
3|5|6
3|5|7
3|6|6
3|6|7

作者: forward_ding   发布时间: 2011-06-27

join '|', map { join '', $_ } @array;

作者: flw   发布时间: 2011-06-27

是25个数组哦,每次每个数组只提供且必须提供一个元素做排列的元素。

作者: forward_ding   发布时间: 2011-06-27

回复 forward_ding


    不知是这个意思不?
  1. echo '1 2 3
  2. 4 5 6
  3. 6 7' |\
  4. perl -lne '{$arr="a".$.;@$arr=(split(/ /,$_))}END{print join "|",map {$a3[$_],$a1[$_],$a2[$_]} 0..2}'
  5. 6|1|4|7|2|5||3|6
复制代码

作者: yinyuemi   发布时间: 2011-06-27

这个和算法何干……

作者: zhlong8   发布时间: 2011-06-27



QUOTE:
回复  forward_ding


    不知是这个意思不?
yinyuemi 发表于 2011-06-27 09:42




    不是这个意思。

我的意思是:
@"1"={1 2 3};
@"2"={4 5 6};
@"3"={6 7};

要求输出如下:
1|4|6
1|4|7
1|5|6
1|5|7
1|6|6
1|6|7
2|4|6
2|4|7
2|5|6
2|5|7
2|6|6
2|6|7
3|4|6
3|4|7
3|5|6
3|5|7
3|6|6
3|6|7

作者: forward_ding   发布时间: 2011-06-27

不就是排列组合嘛……都想歪了,昨天还写了个

http://bbs.chinaunix.net/thread-3557385-1-1.html

作者: zhlong8   发布时间: 2011-06-27