自然数の分割
Posted feedbacks - Perl
1 2 3 4 5 6 7 8 9 10 11 | sub divide {
my ($n,$m) = @_;
return [[$n]] if $m == 1;
my @list;
for(my $k=$n;$k>=0;$k--){
push @list, map {[$k,@{$_}]} @{divide($n-$k,$m-1)};
}
return [@list];
}
map {print join ",", @{$_},"\n";} @{divide(5,3)}
|
非常に安直
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!perl
use strict;
use warnings;
output(@ARGV);
sub output {
my ($n, $m, @result) = @_;
if ($m == 1) {
print join(", ", @result, $n), "\n";
return;
}
for my $i (reverse 0..$n) {
push @result, $i;
output($n - $i, $m - 1, @result);
pop @result;
}
}
|



herumi
#4099()
Rating1/1=1.00
[ reply ]