poj 3356 求最短編輯距離

2021-06-07 00:30:11 字數 599 閱讀 1334

題目大意:給定兩個字串x,y,要你求出x經過插入,刪除,替換變成y所要的最少操作,即編輯距離。

當x[i] == y[j]時,i和j不需要編輯,要麼刪除,要麼插入,要麼替換

dp[i][j] = min(dp[i-1][j-1], dp[i-1][j] + 1, dp[i][j - 1] + 1)

當x[i] != y[i]時, i和j不需要編輯

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

注意初始化

dp[i][0] = dp[0][i] = i;

#include #include #include #include using namespace std;

const int maxn = 1010;

char strx[maxn], stry[maxn];

int lenx, leny, dp[maxn][maxn];

int main()

}printf("%d\n", dp[lenx][leny]);

}return 0;

}

編輯距離 poj 3356

include define n 1002 char src null,des null int m,n int dis n n main int i,j,k while scanf d m eof src char malloc sizeof char m 1 scanf s src scanf ...

最小編輯距離 poj3356

我開始讀題的時候以為弄錯提了。看來讀題還是有待提高 題意是 給定兩個串,乙個a,b,讓a變成b 有兩種操作 1 增加乙個字元 2 減少乙個字元 3 轉換乙個字元 每一次操作算一次運算元,問你最小的運算元 在華南農業大學的acm群裡有人問這道題,後來翻了翻,還是挺有意思的,開始以為是最長公共子串,後來...

POJ3356 AGTC 題解 最短編輯距離問題

題目大意 求 由字串 s 通過下列三種操作 插入乙個字元 刪除乙個字元 改變乙個字元 變換到字串 t 所需要的最少操作次數 亦即最短編輯距離問題 解題思路 定義狀態 f i j 表示 s 0.i 和 t 0.j 合併所需的最小花費,則可得狀態轉移方程為 字串座標從 1 開始,0 表示乙個都沒選 實現...