- 论坛徽章:
- 145
|
$ time perl -e 'sub chk{my%h=@_;my%v;for(keys %h){++$v{$_};++$v{$h{$_}}}for(keys %h){return if($h{$_}!=$v{$_})};for(0..9){print "$_,$h{$_}\n"}print "="x20 . "\n"}sub add{my($p,$m,%h)=@_;$h{$p}+=$m;if($p==9){chk(%h);return};for(0..8){$s=0;for$x(0..9){$s+=$h{$x}};return if($s>20);add($p+1,$_,%h);}};@a=(0..9);@h{@a}=(1)x@a;add(0,0,%h)'
0,1
1,7
2,3
3,2
4,1
5,1
6,1
7,2
8,1
9,1
====================
real 0m10.494s
user 0m9.725s
sys 0m0.152s
$ time perl -e 'sub chk{my%h=@_;my%v;for(keys %h){++$v{$_};++$v{$h{$_}}}for(keys %h){return if($h{$_}!=$v{$_})};for(0..9){print "$_,$h{$_}\n"}print "="x20 . "\n"}sub add{my($p,$m,%h)=@_;$h{$p}+=$m;if($p==9){chk(%h);return};for(0..8){$s=0;for$x(0..9){$s+=$h{$x}};return if($s>20);add($p+1,$_,%h);}};@a=(0..9);@h{@a}=(1)x@a;add(0,$_,%h)for(0..8)'
0,1
1,7
2,3
3,2
4,1
5,1
6,1
7,2
8,1
9,1
====================
real 0m20.755s
user 0m19.545s
sys 0m0.216s
|
|