Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,22 @@
|
|||
use strict;
|
||||
|
||||
sub lis {
|
||||
my @l = map [], 1 .. @_;
|
||||
push @{$l[0]}, +$_[0];
|
||||
for my $i (1 .. @_-1) {
|
||||
for my $j (0 .. $i - 1) {
|
||||
if ($_[$j] < $_[$i] and @{$l[$i]} < @{$l[$j]} + 1) {
|
||||
$l[$i] = [ @{$l[$j]} ];
|
||||
}
|
||||
}
|
||||
push @{$l[$i]}, $_[$i];
|
||||
}
|
||||
my ($max, $l) = (0, []);
|
||||
for (@l) {
|
||||
($max, $l) = (scalar(@$_), $_) if @$_ > $max;
|
||||
}
|
||||
return @$l;
|
||||
}
|
||||
|
||||
print join ' ', lis 3, 2, 6, 4, 5, 1;
|
||||
print join ' ', lis 0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15;
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
sub lis {
|
||||
my @pileTops;
|
||||
# sort into piles
|
||||
foreach my $x (@_) {
|
||||
# binary search
|
||||
my $low = 0, $high = $#pileTops;
|
||||
while ($low <= $high) {
|
||||
my $mid = int(($low + $high) / 2);
|
||||
if ($pileTops[$mid]{val} >= $x) {
|
||||
$high = $mid - 1;
|
||||
} else {
|
||||
$low = $mid + 1;
|
||||
}
|
||||
}
|
||||
my $i = $low;
|
||||
my $node = {val => $x};
|
||||
$node->{back} = $pileTops[$i-1] if $i != 0;
|
||||
$pileTops[$i] = $node;
|
||||
}
|
||||
my @result;
|
||||
for (my $node = $pileTops[-1]; $node; $node = $node->{back}) {
|
||||
push @result, $node->{val};
|
||||
}
|
||||
|
||||
return reverse @result;
|
||||
}
|
||||
|
||||
foreach my $r ([3, 2, 6, 4, 5, 1],
|
||||
[0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]) {
|
||||
my @d = @$r;
|
||||
my @lis = lis(@d);
|
||||
print "an L.I.S. of [@d] is [@lis]\n";
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue