計算兩個字串的距離(遞迴搜尋會爆棧)

2021-08-02 12:04:47 字數 797 閱讀 7430

/*

很經典的可使用動態規劃方法解決的題目,和計算兩字串的最長公共子串行相似。

設ai為字串a(a1a2a3 … am)的前i個字元(即為a1,a2,a3 … ai)

設bj為字串b(b1b2b3 … bn)的前j個字元(即為b1,b2,b3 … bj)

設 l(i,j)為使兩個字串和ai和bj相等的最小操作次數。

當ai==bj時 顯然 l(i,j) = l(i-1,j-1)

當ai!=bj時

若將它們修改為相等,則對兩個字串至少還要操作l(i-1,j-1)次

若刪除ai或在bj後新增ai,則對兩個字串至少還要操作l(i-1,j)次

若刪除bj或在ai後新增bj,則對兩個字串至少還要操作l(i,j-1)次

此時l(i,j) = min( l(i-1,j-1), l(i-1,j), l(i,j-1) ) + 1

顯然,l(i,0)=i,l(0,j)=j, 再利用上述的遞推公式,可以直接計算出l(i,j)值。

*/#includeusing namespace std;

int dp[1000][1000];

int main()

else

}coutint dist(int pa,int pb,string a,string b)

if(pb>=b.size())

if(a[pa]==b[pb])

else

return 0;

}int main()

return 0;

}

計算兩個字串的距離

題目描述 對於不同的字串,希望能夠有辦法判斷其相似程度。定義了如下方法來把兩個不同的字串變得相同,具體的操作方法為 1.修改乙個字元 如把 a 替換為 b 2.增加乙個字元 如把 abc 變換為 aabc 3.刪除乙個字元 如把 abc 變換為 bc 比如,對於 abc 和 bc 兩個字串來說,可以...

計算兩個字串的距離演算法

題目的描述為 將乙個字串變成另乙個字串,方式為新增乙個字元,刪除乙個字元,替換乙個字元,求這些操作的做小次數,例如字串db adcb 兩個字串,通過新增a和c兩個字元獎db編輯成adcb,這個兩個字串的距離為2 思路 定義乙個二維代價陣列dp n m 設新增乙個字元的代價為 ic inseret c...

求兩個字串的距離

給定兩個長度相等的,由小寫字母組成的字串s1和s2,定義s1和s2的距離為兩個字串有多少個位置上的字母不相等。現在牛牛可以選定兩個字母x1和x2,將s1中的所有字母x1均替換成x2。x1和x2可以相同 牛牛希望知道執行一次替換之後,兩個字串的距離最少為多少。x1和x2是自己求的,未知 輸入 aaa ...