給出兩個單詞,計算出將其中乙個單詞轉換為另乙個單詞
所需的最少步驟,允許插入、刪除、替換字母。
如將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,就花了點時間想了個簡單的演算法,一執行...