编辑距离

来源:互联网 发布:如何编写淘宝客招募贴 编辑:程序博客网 时间:2024/06/10 03:56

                                                                编辑距离

把字符串A变成B最少操作次数。

    1:删除一个字符

    2:插入一个字符

    3:讲一个字符换成另一个字符

状态转移方程:

      f[i,j]:=min(f[i-1,j]+1,f[i,j-1]+1),f[i-1,j-1]+1);


var

  i,j,k,l1,l2,m,n:longint;
  s1,s2:ansistring;
  f:array[0..2001,0..2001]of longint;


function min(a,b:longint):longint;
begin
  if a<b then exit(a);
  exit(b);
end;


begin
  readln(s1);
  readln(s2);
  l1:=length(s1);
  l2:=length(s2);
  for i:=1 to l1 do f[0,i]:=i;
  for i:=1 to l2 do f[i,0]:=i;
  for i:=1 to l1 do
    for j:=1 to l2 do
      begin
        if s1[i]=s2[j] then f[i,j]:=f[i-1,j-1]
                        else f[i,j]:=min(min(f[i-1,j]+1,f[i,j-1]+1),f[i-1,j-1]+1);
      end;
  writeln(f[l1,l2]); 
end.
0 0