p2758 編輯距離
設a和b是兩個字串。我們要用最少的字元操作次數,將字串a轉換為字串b。這裡所說的字元操作共有三種:
1、刪除乙個字元;
2、插入乙個字元;
3、將乙個字元改為另乙個字元;
!皆為小寫字母!
輸入格式:
第一行為字串a;第二行為字串b;字串a和b的長度均小於2000。
輸出格式:
只有乙個正整數,為最少字元操作次數。
輸入樣例#1:
sfdqxbwgfdgw
輸出樣例#1:
4
varf:array[0.
.2000,0.
.2000
]of longint;//f[i,j]為第i個數到第j個數的最短的編輯距離
s,ss:ansistring;
i,j,k,len,len2:longint;
function min
(a,b:longint):longint
;begin
ifa<
b then exit
(a);
exit
(b);
end;
begin
readln
(s);
readln(ss);
len:=length(s);
len2:=length(ss);
fori:=
1to len
do f[i,
0]:=i;//不改任何東西最短距離就是它自己咯
fori:=
1to len2
dof[
0,i]:=i;//同上
fori:=
1to len
dofor
j:=1
to len2
doif
s[i]=ss[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);
writeln(f[len,len2]);
end.
P2758 編輯距離
p2758 編輯距離 危樓還望,嘆此意 今古幾人曾會?鬼設神施,渾認作 天限南疆北界。一水橫陳,連崗三面,做出爭雄勢。六朝何事,只成門戶私計?題目描述 設a和b是兩個字串。我們要用最少的字元操作次數,將字串a轉換為字串b。這裡所說的字元操作共有三種 1 刪除乙個字元 2 插入乙個字元 3 將乙個字元...
P2758 編輯距離 DP
傳送門 思路 經典兩個字串匹配的dpdp dp,找到狀態轉移方程即可。這裡提供兩種寫法,dpdp dp,記憶化搜尋。實質一樣。p s ps ps 記憶化搜尋看著舒服一些。d pdp dp include using namespace std typedef long long ll const i...
P2758 編輯距離 dp
設a和b是兩個字串。我們要用最少的字元操作次數,將字串a轉換為字串b。這裡所說的字元操作共有三種 1 刪除乙個字元 2 插入乙個字元 3 將乙個字元改為另乙個字元 皆為小寫字母!第一行為字串a 第二行為字串b 字串a和b的長度均小於2000。只有乙個正整數,為最少字元操作次數。輸入 1複製 sfdq...