- 论坛徽章:
- 0
|
#!/usr/bin/perl
use strict;
use warnings;
my @data = (1, 2, 3);
my $k = 4;
my $end = $data[-1];
@data = map {$data[0]} 1..$k;
print @data, "\n";
while (1) {
my $t = -1;
REDO:
$data[$t] += 1;
if ($data[$t] > $end) {
$t -= 1;
last if abs $t > $k;
goto REDO;
}
@data[$t .. -1] = map {$data[$t]} ($t .. -1);
print @data, "\n";
}
__END__
for @data = (1, 2, 3) and $k = 4:
(1, 1, 1, 1)
(1, 1, 1, 2)
(1, 1, 1, 3)
(1, 1, 2, 2)
(1, 1, 2, 3)
(1, 1, 3, 3)
(1, 2, 2, 2)
(1, 2, 2, 3)
(1, 2, 3, 3)
(1, 3, 3, 3)
(2, 2, 2, 2)
(2, 2, 2, 3)
(2, 2, 3, 3)
(2, 3, 3, 3)
(3, 3, 3, 3)
|
[ 本帖最后由 cobrawgl 于 2009-1-23 09:26 编辑 ] |
|