Informatika gyűjtemény

Egy szinttel feljebb pt_dns.pas

2004050607080910

NézetNyomtat

pt_dns.pas (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 1 KB
program dns;
const FName   = 'lkr';
      FNum    = '0';
      FBe     = FName+FNum+'.be';
      FKi     = FName+FNum+'.kix';
      CFel    = 1;
      CBal    = 2;
      CAtl    = 3;
type  TArr  = array[0..100,0..100] of byte;
      
var   cache:TArr;
      choice:TArr;
      x,y:string;
      ki:text;
      
procedure load;
var be:text;
begin
  assign(be,FBe);
  reset(be);
  readln(be,x);
  readln(be,y);
  close(be);
end;

procedure dp;
var i,j:byte;
begin
  for i:=0 to length(x) do cache[i,0]:=0;
  for j:=0 to length(y) do cache[0,i]:=0;
  for i:=1 to length(x) do
    for j:=1 to length(y) do
      begin
        if x[i]=y[j] then
          begin
            cache[i,j]:=cache[i-1,j-1]+1;
            choice[i,j]:=Catl;
          end else
        if cache[i-1,j]>cache[i,j-1] then
          begin
            cache[i,j]:=cache[i-1,j];
            choice[i,j]:=Cfel;
          end else
          begin
            cache[i,j]:=cache[i,j-1];
            choice[i,j]:=Cbal;
          end;
      end;
end;

procedure wrout(i,j:byte);
begin
  if (i=0)or(j=0) then exit;
  if choice[i,j]=CFel then wrout(i-1,j) else
  if choice[i,j]=CBal then wrout(i,j-1) else
  begin
    wrout(i-1,j-1);
    write(ki,x[i]);
  end;
end;


begin
  load;
  dp;
  assign(ki,Fki);
  rewrite(ki);
  writeln(ki,cache[length(x),length(y)]);
  wrout(length(x),length(y));
  close(ki);
  readln;
end.
(Vissza)