- 论坛徽章:
- 2
|
8楼的算法还是有问题的,并没有穷举出来
如:CNNNCNNC
ywlscpl 发表于 2011-10-03 10:06 ![]()
的确是有问题,想要awk写个递归穷尽,没成功,还是用perl吧- cat s.pl
- #!/bin/perl
- use strict;
- my $txt="CCCNNNNN";
- my @array=split "", $txt;
- my %hash;
- sub switch{
- my $t;
- my ($a,$b,$c)=@_;
- $t=@$c[$a];
- @$c[$a]=@$c[$b];
- @$c[$b]=$t;
- }
- sub arrange{
- my $i;
- my ($index,@arr)=@_;
- if($index==8) {
- my $t=join "", @arr;
- if(! defined $hash{$t}){
- $hash{$t}++;$hash{reverse $t}++;print @arr,"\n";
- }
- }
- else{
- for($i=$index;$i<8;$i++){
- switch($index,$i,\@arr);
- arrange($index+1,@arr);
- switch($index,$i,\@arr);
- }
- }
- }
- arrange(0,@array);
- perl s.pl
- CCCNNNNN
- CCNCNNNN
- CCNNCNNN
- CCNNNCNN
- CCNNNNCN
- CCNNNNNC
- CNCCNNNN
- CNCNCNNN
- CNCNNCNN
- CNCNNNCN
- CNCNNNNC
- CNNCCNNN
- CNNCNCNN
- CNNCNNCN
- CNNCNNNC
- CNNNCCNN
- CNNNCNCN
- CNNNNCCN
- NCCCNNNN
- NCCNCNNN
- NCCNNCNN
- NCCNNNCN
- NCNCCNNN
- NCNCNCNN
- NCNCNNCN
- NCNNCCNN
- NNCCCNNN
- NNCCNCNN
复制代码 |
|