In perl (hopefully the homework has been due already)...
use strict;
our %memo;
sub lcs {
my ($x, $y) = @_;
my $key = "$x|$y";
return $memo{$key} if defined $memo{$key};
my $s = '';
for (my $i = 0; $i < length($x); $i++) {
for (my $j = 0; $j < length($y); $j++) {
if (substr($x, $i, 1) eq substr($y, $j, 1)) {
my $t = lcs(substr($x, 0, $i), substr($y, 0, $j))
. substr($x, $i, 1)
. lcs(substr($x, $i+1), substr($y, $j+1));
$s = $t if length($t) > length($s);
}
}
}
$memo{$key} = $s;
return $s;
}
print lcs("now is the time for all good men to come to the aid",
"there are few good men who will aid women");