1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| longueurchaine1:=length(chaine1) ;
longueurchaine2:=length(chaine2) ;
setlength(tab,longueurchaine1+1,longueurchaine2+1) ;
for i:=1 to longueurchaine1 do tab[i,0]:=i ;//initialisation de la premiere ligne de 0 à longueurchaine1
for j:=1 to longueurchaine2 do tab[0,j]:=j ;//initialisation de la premiere colonne de 0 à longueurchaine2
tab[0,0]:=0 ;
if longueurchaine1=0 then result:=longueurchaine2 ;
if longueurchaine2=0 then result:=longueurchaine1 ;
for i:=1 to longueurchaine1 do
begin
for j:=1 to longueurchaine2 do
begin
if chaine1[i]=chaine2[j] then cout:=0
else cout:=1 ;
mini:=minimum(tab[i-1,j],tab[i,j-1],tab[i-1,j-1]) ;
tab[i,j]:=mini+cout ;
end;
end;
result:=tab[longueurchaine1,longueurchaine2] ;
finalize(tab) ; |