22 lines
446 B
Perl
22 lines
446 B
Perl
use strict;
|
|
|
|
sub max_sub(\@) {
|
|
my ($a, $maxs, $maxe, $s, $sum, $maxsum) = shift;
|
|
foreach (0 .. $#$a) {
|
|
my $t = $sum + $a->[$_];
|
|
($s, $sum) = $t > 0 ? ($s, $t) : ($_ + 1, 0);
|
|
|
|
if ($maxsum < $sum) {
|
|
$maxsum = $sum;
|
|
($maxs, $maxe) = ($s, $_ + 1)
|
|
}
|
|
}
|
|
@$a[$maxs .. $maxe - 1]
|
|
}
|
|
|
|
my @a = map { int(rand(20) - 10) } 1 .. 10;
|
|
my @b = (-1) x 10;
|
|
|
|
print "seq: @a\nmax: [ @{[max_sub @a]} ]\n";
|
|
print "seq: @b\nmax: [ @{[max_sub @b]} ]\n";
|