- 论坛徽章:
- 0
|
本帖最后由 zxp209 于 2012-04-11 18:04 编辑
大家好!
从咱们论坛上找了一个递归求通路的代码,但是我这边的需求稍有差别。
源地址:
http://bbs.chinaunix.net/forum.p ... mp;fromuid=25526646
我用了- #!/usr/local/bin/perl
- use strict;
- use Data::Dumper;
- my %Raw;
- open(FILE,"test4.txt");
- while(my $line = <FILE>) {
- next if($line !~ /(\S+)\s+(\S+)/);
- push @{$Raw{$1}}, $2;
- }
- close(FILE);
- my %Reslut;
- foreach my $BeginPoint (keys %Raw) {
- $Reslut{$BeginPoint} = 1;
- &traversal(\%Raw,$BeginPoint,$BeginPoint,\%Reslut);
- }
- foreach my $key (sort keys %Reslut) {
- print "$key\n";
- }
- sub traversal() {
- my ($Raw,$Value,$EPoint,$Reslut) = @_;
-
- for (my $i=0; $i<=$#{$Raw->{$EPoint}}; $i++) {
- my $NewPoint = $Raw->{$EPoint}[$i];
- next if($Value =~ $NewPoint);
-
- my $NewValue = $Value.$NewPoint;
- $Reslut{$NewValue} = 1;
- &traversal($Raw,$NewValue,$NewPoint,$Reslut);
- }
-
- return 0;
- }
复制代码 假如test4.txt的内容如下
a b
a c
b e
b f
c e
c f
b c
e f
那么这个代码打印的结果是
a
ab
abc
abce
abcef
abcf
abe
abef
abf
ac
ace
acef
acf
b
bc
bce
bcef
bcf
be
bef
bf
c
ce
cef
cf
e
ef
我现在想实现各个字母之间用逗号分隔,不知道大家有什么建议没有,谢谢啦。例如:
a,b,c,f
a,b,e
a,b,e,f
a,b,f
a,c
a,c,e
a,c,e,f
a,c,f
b,
b,c
b,c,e,
b,c,e,f
b,c,f
b,e
b,e,f
b,f
c,
c,e
c,e,f
c,f
e,
e,f
|
|