Есть два предложения из простых смволов латынского алфавита.
Цель: надо найти найбольшую общую последовательность.
Например:
1. aacdgtserf
2. ascfde
Наибольшая общая последовательность тут будет "acde"
uses crt;
var s1,s2,s:string;
i,j,k,startj:integer;
flag:boolean;
Begin
clrscr;
readln(s1);
readln(s2);
k:=0;
i:=1;
startj:=1;
j:=startj;
while i<=length(s1) do
begin
j:=startj;
flag:=true;
while (j<=length(s2))and(flag) do
if s1[i]=s2[j] then
begin
flag:=false;
startj:=j+1;
inc(k);
s[k]:=s1[i];
inc(i);
end
else inc(j);
if flag then
inc(i);
end;
for i:=1 to k do
write(s[i]);
readln;
end.
k := 0;
...
inc(k);
s[k]:=s1[i];
...
for i:=1 to k do
write(s[i]);
s := '';
...
s := s + s1[i];
...
writeln(s)
uses crt;
var s1,s2,s,sss:string;
i,j,k,startj,count:integer;
flag:boolean;
Begin
clrscr;
readln(s1);
readln(s2);
i:=1; count:=0;
startj:=1; j:=startj;
s:='';
repeat
while i<=length(s1) do
begin
j:=startj;
flag:=true;
while (j<=length(s2))and(flag) do
if s1[i]=s2[j] then
begin
flag:=false;
startj:=j+1;
s:=s+s1[i];
inc(i);
end
else inc(j);
if flag then
inc(i);
end;
writeln;
sss:=s1;
s1:=s2;
s2:=sss;
inc(count);
writeln(count,'>',s);
startj:=1;
j:=startj;
s:='';
i:=1;
until count=2;
readln;
end.