免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 8764 | 回复: 25

又是个算法问题,帮忙看下 [复制链接]

论坛徽章:
0
发表于 2009-01-22 17:09 |显示全部楼层
For example, for @data = (1, 2, 3) and $k = 2:

    (1, 1)
    (1, 2)
    (1, 3)
    (2, 2)
    (2, 3)
    (3, 3)

Note that $k can be greater than the length of @data. For example, for @data = (1, 2) and $k = 3:

    (1, 1, 1)
    (1, 1, 2)
    (1, 2, 2)
    (2, 2, 2)


for @data = (1, 2, 3) and $k = 4:

    (1, 1, 1, 1)
    (1, 1, 1, 2)
    (1, 1, 1, 3)
    (1, 1, 2, 2)
    (1, 1, 2, 3)
    (1, 1, 3, 3)
    (1, 2, 2, 2)
    (1, 2, 2, 3)
    (1, 2, 3, 3)
    (1, 3, 3, 3)
    (2, 2, 2, 2)
    (2, 2, 2, 3)
    (2, 2, 3, 3)
    (2, 3, 3, 3)
    (3, 3, 3, 3)

[ 本帖最后由 yxm0513 于 2009-1-22 19:38 编辑 ]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
发表于 2009-01-22 17:44 |显示全部楼层
原帖由 yxm0513 于 2009-1-22 17:09 发表
    (1, 1, 1, 1)
    (1, 1, 1, 2)
    (1, 1, 1, 3)
    (1, 1, 2, 2)
    (1, 1, 2, 3)
    (1, 1, 3, 3)
    (1, 2, 2, 2)
    (1, 2, 2, 3)
    (1, 2, 3, 3)
    (1, 3, 3, 3)
    (2, 2, 2, 2)
    (2, 2, 2, 3)
    (2, 2, 3, 3)
    (2, 3, 3, 3)
    (3, 3, 3, 3)

红色的应该是(1, 1, 2, 1) ?

论坛徽章:
0
发表于 2009-01-22 17:49 |显示全部楼层


  1. my @data = (1, 2, 3);
  2. my $k = 4;

  3. sub foo {
  4.   my @cur_list = @_;
  5.   if(@cur_list == $k){
  6.     print @cur_list, "\n";
  7.     return;
  8.   }
  9.   foo(@cur_list, $_) for @data;
  10. }
  11. foo;
复制代码

别把问题想复杂了  

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
发表于 2009-01-22 18:15 |显示全部楼层

回复 #3 DQP 的帖子

厉害!

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2009-01-22 18:54 |显示全部楼层

回复 #3 DQP 的帖子

楼主要的应该是这种效果:

  1. $ cat test.pl
  2. #! /usr/bin/perl

  3. use strict;
  4. use warnings;

  5. my @data = (1, 2, 3);
  6. my $k = 4;

  7. sub foo {
  8.   my @cur_list = @_;
  9.   if(@cur_list == $k){
  10.     print @cur_list, "\n";
  11.     return;
  12.   }
  13.   foo(@cur_list, $_) for @data;
  14. }
  15. foo;
  16. $ test.pl | grep -Ev '3.*[21]|2.*1'
  17. 1111
  18. 1112
  19. 1113
  20. 1122
  21. 1123
  22. 1133
  23. 1222
  24. 1223
  25. 1233
  26. 1333
  27. 2222
  28. 2223
  29. 2233
  30. 2333
  31. 3333
复制代码

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
发表于 2009-01-22 18:57 |显示全部楼层

回复 #5 ly5066113 的帖子

跟$k=2和$k=3时的规律不一样?

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2009-01-22 19:06 |显示全部楼层

回复 #6 ynchnluiti 的帖子

好象是,看楼主给的例子。

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
发表于 2009-01-22 19:11 |显示全部楼层
原帖由 ly5066113 于 2009-1-22 19:06 发表
好象是,看楼主给的例子。

嗯。我现在遇到数学,算法就头晕。
需要恶补一下

论坛徽章:
0
发表于 2009-01-22 19:36 |显示全部楼层
好像是有点问题,改下

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
发表于 2009-01-22 19:42 |显示全部楼层
原帖由 yxm0513 于 2009-1-22 19:36 发表
好像是有点问题,改下

难度又加大了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP