演算法 計算兩個單詞之間轉換的最少步驟

2021-09-02 17:50:33 字數 949 閱讀 8566

給出兩個單詞,計算出將其中乙個單詞轉換為另乙個單詞

所需的最少步驟,允許插入、刪除、替換字母。

如將horse轉換為ros最少可進行3步:

1.將h替換為r -- rorse

2.刪除r -- rose

3.刪除e -- ros

上述問題咱們可以簡化為給出兩個單詞,然後求出它們倆

之間的編輯距離d。注意到對於簡短的單詞來說會更簡

單,難點在於求出長度分別是m、n的單詞的編輯距離的計

算。這個問題可以使用動態規劃來計算:

對於0<= i <= n,0 <= j <= m,已知d[i-1][j-1],d[i-1][j],

d[i][j-1],求d[i][j]的值,其中,若word1[i] != word2[j],

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

若word1[i] = word2[j],d[i][j] = 1 + min(d[i-1][j],d[i][j-1],d[i-1][j-1]);

public

static

intmindistance

(string word1,string word2)

for(

int j =

0; j < m +

1; j++

)//dp compute

for(

int i =

1; i < n +

1; i++

) d[i]

[j]= math.

min(left,math.

min(down,left_down));

}}return d[n]

[m];

}

兩個單詞之間的編輯距離

參考部落格 給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h ...

經典演算法 計算兩個日期之間的天數

如題所示,這個演算法就是寫起來麻煩一點,不過還是很簡單的,思路清晰就非常好做 思路 用兩套陣列分別儲存每個月的天數,分別是閏年和非閏年,分別為num1 和 num2 然後就是先計算年和年之間的差距 include using namespace std int num1 12 int num2 12...

計算兩個IP之間的所有IP的演算法

乙個演算法 有兩個未知的ip,例如 ip1 10.80.1.1和ip2 10.30.1.1,怎麼能計算機出他們之間所有的ip,然後用sql語句插入資料庫,非常感謝!在qq群裡面看到有人發這個請求。正好有點閒暇,google了一下,沒找到相關的演算法sample,就花了點時間想了個簡單的演算法,一執行...