Informatika gyűjtemény

Egy szinttel feljebb pt_tukor.dpr

2004050607080910

NézetNyomtat

pt_tukor.dpr (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 tukor;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const FName = 'tukor';
      FNum  = 'A';
      FBe   = FName+'.be'+FNum;
      FKi   = FName+'.kix'+FNum;

var s,s2:string;
    k:shortint;
    cache:array[1..100,1..100]of shortint;

procedure load;
var be:textfile;
    i,j:shortint;
begin
  assignfile(be,FBe);
  reset(be);
  readln(be,s);
  closefile(be);
  for i:=1 to 100 do
    for j:=1 to 100 do
      cache[i,j]:=-1;
end;

procedure final;
var ki:textfile;
begin
  assignfile(ki,Fki);
  rewrite(ki);
  writeln(ki,k);
  writeln(ki,s2);
  closefile(ki);
end;

function f(k,v:shortint):shortint;
var r,a,b:shortint;
begin
  if cache[k,v]<>-1 then f:=cache[k,v] else
    begin
      if v<=then r:=v-k+1 else
        if s[k]=s[v] then
          r:=2+f(k+1,v-1)
        else begin
          a:=f(k+1,v);
          b:=f(k,v-1);
          if a>=then r:=else r:=b;
        end;
      cache[k,v]:=r;
      result:=r;
    end;
end;

function g(k,v:shortint):string;
begin
  if k>then g:='' else
    if k=then g:=s[k] else
      if s[k]=s[v] then g:=s[k]+g(k+1,v-1)+s[v] else
        if cache[k+1,v]>cache[k,v-1] then g:=g(k+1,v) else g:=g(k,v-1);
end;

begin
  { TODO -oUser -cConsole Main : Insert code here }
  load;
  k:=f(1,length(s));
  s2:=g(1,length(s));
  final;
end.
(Vissza)