NKEDIT - Hiệu chỉnh văn bản

Tác giả: skyvn97

Ngôn ngữ: Pascal

program NKEDIT;
uses crt;
var
   s,p:string;
   c,k:integer;
   f:array [1..50,1..50] of integer;
procedure init;
          begin
               readln(k);
               readln(s);
               readln(p);
               c:=0;
          end;
procedure process;
          var
             i,j,max,wi,wj:integer;
          begin
               repeat
                     max:=-1;
                     for i:=1 to length(s) do
                         if s[i]=p[1] then f[i][1]:=1 else f[i][1]:=0;
                     for i:=1 to length(p) do
                         if s[1]=p[i] then f[1][i]:=1 else f[1][i]:=0;
                     for i:=2 to length (s) do
                         for j:=2 to length(p) do
                             if s[i]=p[j] then f[i][j]:=f[i-1][j-1]+1 else f[i][j]:=0;
                     for i:=1 to length(s) do
                         for j:=1 to length(p) do
                             if f[i][j]>max then
                                begin
                                     max:=f[i][j];
                                     wi:=i-max+1;
                                     wj:=j-max+1;
                                end;
                     if max>=k then
                        begin
                             delete(s,wi,max);
                             delete(p,wj,max);
                             inc(c);
                        end;
               until max<k;
          end;
procedure print;
          begin
               writeln(c);
               writeln(s);
               writeln(p);
          end;
begin
     init;
     process;
     print;
     readln;
end.

Download