編輯距離問題c語言實現

2021-06-17 21:07:58 字數 743 閱讀 3757

所謂編輯距離是指乙個字串轉化成另外乙個字串所需要的最少編輯次數。

1)增加乙個字元

2)刪除乙個字元

3)用乙個字元替換原來的字元

解決的方法當然是動歸了。首先研究子問題,假設兩字串a,b。

1)、當兩個字串長度為1時,若字元相同則編輯距離為0;若不同則為1;

2)、當乙個a的長度為1,b的長度為n時,先利用1)的方法計算a和b第乙個字元的編輯距離為t,然後判斷a和b[2],如果相同則為t,如不相同則為t+1;依次類推。需要注意的是,兩個字串之間的編輯距離不可能小於他們的長度之差。

3)、當a長度為m,b長度為n時,假設distance(a,b)表示a前a個字元和b前b個字元的編輯距離,

如果a[a]==b[b] 則distance[a][b]=distance[a-1][b-1];

否則distance[a][b]=min(distance[a][b-1],distance[a-1][b],distance[a-1][b-1])+1。

c語言實現如下:

#include #include #include int ed[100][100];

int min(int a,int b,int c)

void edit_dist1(char *a,char *b)

for(i=1;ix?i:x;

}}void edit_dist2(char* a,char* b)

{ int i,j;

for(i=1;i

動態規劃求編輯距離(C語言實現)

給出兩個單詞word1和word2,計算出將word1轉換成word2需要的最少運算元。對乙個單詞可以進行三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 舉例 輸入 word1 horse word2 ros 輸出 3 步驟 將h替換為r得到rorse,刪除第二個r得到rose,刪除e得到ros...

C語言實現撈魚問題

撈魚問題 20個桶,每個桶中有10條魚,用網從每個桶中抓魚,每次可以抓住的條數隨機,每個桶只能抓一次,問一共抓到180條的排列有多少種。分析 看看這個問題的對偶問題,抓取了180條魚之後,20個桶中剩下了20條魚,不同的抓取的方法就對應著這些魚在20個桶中不同的分布,於是問題轉化為將20條魚分到20...

約瑟夫問題 C語言實現

約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3 n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0 n 1,最後 1 結果...