#! perl -slw use strict; sub lis { my( $aoa ) = [[ pop @_ ]]; for my $n ( reverse @_ ) { $n < $_->[0] and push @$aoa, [ $n, @$_ ] for @$aoa; push @$aoa, [ $n ]; } my $r = pop @$aoa; @$_ > @$r and $r = $_ for @$aoa; return @$r; } my @t1 = ( 8, 6, 5, 1, 9, 3, 7, 4, 2, 10 ); my @t2 = ( 3, 10, 6, 1, 5, 7, 8, 2, 4, 9 ); print "\n@t1"; print join ' ', lis @t1; print "\n@t2"; print join ' ', lis @t2; __END__ c:\test>543621-2 8 6 5 1 9 3 7 4 2 10 1 3 4 10 3 10 6 1 5 7 8 2 4 9 1 5 7 8 9