免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: chenhao392
打印 上一主题 下一主题

新手perl问题求助 [复制链接]

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00
21 [报告]
发表于 2007-02-08 22:37 |只看该作者

回复 19楼 xiaoshengcaicai 的帖子

是的,难为你了
to楼上:
好的,我发给你

[ 本帖最后由 chenhao392 于 2007-2-9 00:00 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2007-02-08 22:37 |只看该作者
原帖由 redspider 于 2007-2-8 22:19 发表

可否email一个 thank you
redspid@163.com


现在在家,手头没有。不过搂主不是搜到了吗,给redspider兄发一份吧。

论坛徽章:
0
23 [报告]
发表于 2007-02-08 22:39 |只看该作者


  1. #!perl
  2. use strict;

  3. use Data::Dumper;
  4. use constant MAX_DEPTH => 100;

  5. my @array = (
  6.     ['a','b'],
  7.     ['a','c'],
  8.     ['b','e'],
  9.     ['b','f'],
  10.     ['c','e'],
  11.     ['c','f'],
  12.     ['b','c'],
  13.     ['e','f'],
  14. );

  15. #make graph map
  16. my $map = {};
  17. for (@array) {
  18.     push @{ $map->{$_->[0]} }, $_->[1];
  19. }

  20. #print Dumper($map);

  21. #start
  22. my @result = ();
  23. my $depth = 1;
  24. my @start_array = ();

  25. for (keys %$map) {
  26.     push @start_array, { start => $_, end => $_, visited => { $_ => 1} };
  27. }

  28. while ( $depth <= MAX_DEPTH  and @start_array > 0) {
  29.     my @new_start_array = ();
  30.     for my $to_expand (@start_array) {
  31.         my $ra_can_expand = $map->{ $to_expand->{end} };
  32.         for my $can_expand (@$ra_can_expand) {
  33.             if (not $to_expand->{visited}->{$can_expand}) {
  34.                 my %tmp_visited = %{ $to_expand->{visited} };
  35.                 $tmp_visited{$can_expand} = 1;
  36.                 my $new = {
  37.                     start => $to_expand->{start},
  38.                     end => $can_expand,
  39.                     visited => \%tmp_visited,
  40.                 };
  41.                 push @new_start_array, $new;
  42.                 push @result, $new;
  43.             }
  44.         }
  45.     }
  46.    
  47.    
  48.     @start_array = @new_start_array;
  49.     $depth++;
  50. }

  51. print "the all result is \n";
  52. for my $one (@result) {
  53.     my $cost = ( keys %{ $one->{visited} } ) - 1;
  54.     print $one->{start} . '-' . $one->{end} . " cost $cost\n";
  55. }
复制代码

[ 本帖最后由 xiaoshengcaicai 于 2007-2-8 22:46 编辑 ]

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00
24 [报告]
发表于 2007-02-08 23:55 |只看该作者
抱歉,刚才有兄弟来串门。已经发了

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00
25 [报告]
发表于 2007-02-08 23:58 |只看该作者

回复 23楼 xiaoshengcaicai 的帖子

再次感谢,附件小于200k.. 本想把书传不上来的。。

[ 本帖最后由 chenhao392 于 2007-2-9 00:12 编辑 ]

论坛徽章:
0
26 [报告]
发表于 2007-02-09 08:53 |只看该作者
TO 楼上,可以放BLOG里面提供下载

PS,你觉得我的算法是否可行?有什么问题吗,昨天随手写的, 没细想

论坛徽章:
0
27 [报告]
发表于 2007-02-09 09:08 |只看该作者
刚上传了一把
http://blog.chinaunix.net/u/26905/showart_245044.html

这本书我没看过 >_<

不能保证链接一直有效,因为这本书大了点.以后没空间我会删掉它

论坛徽章:
0
28 [报告]
发表于 2007-02-09 14:26 |只看该作者
原帖由 chenhao392 于 2007-2-8 22:37 发表
是的,难为你了
to楼上:
好的,我发给你

已收到,非常感谢!

论坛徽章:
0
29 [报告]
发表于 2007-02-11 13:08 |只看该作者
看看Graph.pm

论坛徽章:
0
30 [报告]
发表于 2007-02-11 13:43 |只看该作者
Algorithms in C
21.3
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP