編輯距離 poj 3356

2021-06-14 01:58:38 字數 622 閱讀 3652

#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("%d",&n);

des = (char*)malloc(sizeof(char)*(n+1));

scanf("%s",des);

for(i=0;i

思路:動態規劃。將a到b的轉換,轉化為最優子結構問題: a[i]與b[j] 需要的操作次數dis[i][j],等於:

if a[i] == b[j] , dis[i][j] = dis[i-1][j-1]

否則,           dis[i][j] = min( dis[i-1][j] + 1 // 刪除操作

dis[i][j-1] +1 //插入操作

dis[i-1][j-1] + 1  ) //替換操作

有非遞迴和遞迴做法。

最小編輯距離 poj3356

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

poj 3356 求最短編輯距離

題目大意 給定兩個字串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...

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

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