免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2853 | 回复: 8
打印 上一主题 下一主题

数组的数组 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-21 17:21 |只看该作者 |倒序浏览
本帖最后由 pony2001mx 于 2015-01-22 11:26 编辑

大家好:
我有一个array的array,想输出所有组合,有些困惑,请高人指点,非常谢谢!
  1. #!/usr/bin/perl

  2. while (<DATA>) {
  3.         push @a, [split];
  4. }

  5. ... #中间部分请指点

  6. __DATA__
  7. a b
  8. f e
  9. o s
复制代码
理想的输出结果是:
a f o
a f s
a e o
a e s
b f o
b f s
b e o
b e s

论坛徽章:
0
2 [报告]
发表于 2015-01-21 22:15 |只看该作者
期待高人指点迷津,谢谢!

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
3 [报告]
发表于 2015-01-22 09:53 |只看该作者
本帖最后由 xiumu2280 于 2015-01-22 10:01 编辑

my @nb = glob "{a1,a2}{b1,b2}{c1,c2}";


另外,你这么写也不是数组的数组···

论坛徽章:
0
4 [报告]
发表于 2015-01-22 10:47 |只看该作者
本帖最后由 pony2001mx 于 2015-01-22 11:16 编辑

回复 3# xiumu2280

非常谢谢!我改正了格式错误,但我还有问题请教,见以下。


我最大的问题是,上例比较简单,其实我的数组的数组有很多内容,比如下面我构建了一个数组的数组, 如何用程序实现类似上面的输出?


程序:
  1. while (<DATA>) {
  2.         push @a, [split];
  3. }

  4. ...

  5. __DATA__
  6. a b
  7. f e
  8. o s
复制代码
理想的结果是
a f o
a f s
a e o
a e s
b f o
b f s
b e o
b e s

   

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
5 [报告]
发表于 2015-01-22 11:04 |只看该作者
本帖最后由 xiumu2280 于 2015-01-22 11:05 编辑

你print一下我那行代码的数组啊···· 就是你想要的···

一行即可···

回复 4# pony2001mx


   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [报告]
发表于 2015-01-22 11:12 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2015-01-22 11:21 |只看该作者
谢谢回复,但我确实不知道如何输出我所想要的结果,请高人再耐心一下,给我写句代码吧? 谢谢!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2015-01-22 11:28 |只看该作者

while (<DATA>) {
    push @a,[split];
   
}

@b;

sub showcombine {
    my $index = shift;
    if($index == @a){
        print "@b\n";
    }
    else{
        for my $ele (@{$a[$index]}){
            push @b,$ele;
            showcombine ($index+1);
            pop @b;
        }
    }
}

showcombine(0);


回复 4# pony2001mx


   

论坛徽章:
0
9 [报告]
发表于 2015-01-22 11:33 |只看该作者
本帖最后由 pony2001mx 于 2015-01-22 11:39 编辑

非常谢谢ntwarren的帮助!也谢谢xiumu2280的回复!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP