algorytm.org

Implementacja w Delphi/Pascal



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Najdłuższe wspólne podsłowo - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 18 stycznia 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

podtekst.dpr:
//Najdluzsze wspolne podslowo
//www.algorytm.org
//(c)2007 Tomasz Lubinski

program podtekst;
{$APPTYPE CONSOLE}
uses
  SysUtils, Math;

var
        s1,s2 : String;
        m,n,maxi,ind,i,j : Integer;
        a: array of array of Integer;
begin

        writeln('Podaj pierwszy ciag');
        readln(s1);
        writeln('Podaj drugi ciag');
        readln(s2);

        m := length(s1);
        n := length(s2);
        maxi := 0;
        ind := 0;
        setLength(a, max(m,n)+1);
        for i:=0 to max(m,n) do
        begin
                setLength(a[i], max(m,n)+1);
        end;
        for i:=0 to max(m,n) do
        begin
                a[0,i] := 0;
                a[i,0] := 0;
        end;
        for i:=1 to m do
                for j:=1 to n do
                        if s1[i] <> s2[j] then
                                a[i,j] := 0
                        else
                        begin
                                a[i,j] := a[i-1,j-1]+1;
                                if a[i,j] > maxi then
                                begin
                                       maxi := a[i,j];
                                       ind := i;
                                end;
                        end;

        writeln('Najdluzszy wspolny podciag ma dlugosc ' + IntToStr(maxi));
        if maxi <> 0 then
        begin
                write('Jest to: ');
                for i:=1 to maxi do
                      write(s1[ind+i-maxi]);
        end;
        readln;
end.


Dodaj komentarz