演算法導論 15 3 編輯距離

2021-06-08 23:33:21 字數 1441 閱讀 9889

題目:

思考:(1)初始化:

s[0,0]=0

s[i,0] = i * cost(delete)

s[0,j] = j * cost[insert]

(2)遞推

(3)最後的操作kill

c[i][j] = min(c[m,n], min(c[i,n]+cost(kill))), 其中0<=i**:

#include using namespace std;

//6種操作的代價,依次是copy,replace,delete,insert,twiddle,kill

int cost[6] = ;

int s[15][15] = ;

//字元從0開始計數,s從1開始

int dp(char *x, char *z, int lx, int lz)

//replace

if(x[i] != z[j])

//delete

temp = s[i][j+1] + cost[2];

if(temp < s[i+1][j+1])

s[i+1][j+1] = temp;

//insert

temp = s[i+1][j] + cost[3];

if(temp < s[i+1][j+1])

s[i+1][j+1] = temp;

//twidle

if(i && j && x[i] == z[j-1] && x[i-1] == z[j])

}} //kill

int ret = s[lx][lz];

for(i = 1; i < lx; i++)

if(s[i][lz] + cost[5] < ret)

ret = s[i][lz] + cost[5];

return ret;

}void print(int lx, int lz)

{ int i, j;

for(i = 1; i <= lx; i++)

{ for(j = 1; j <= lz; j++)

cout<

演算法導論15 3

本小節講述了兩點內容 合適動態規劃演算法解決的最優化問題的兩個要素 備忘方法在動態規劃中的作用 最優子結構乙個問題的最優解包含其子問題的最優解 還有一點值得注意,同時還需要滿足子問題無關的特性 同乙個原問題的乙個子問題的解不影響另乙個子問題的解。重疊子問題某乙個子問題可能會被包含在多個問題中,被反覆...

編輯距離及編輯距離演算法

編輯距離概念描述 編輯距離,又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。例如將kitten一字轉成sitting sitten k s sittin e i sitting g 俄...

編輯距離及編輯距離演算法

include include include using namespace std const int max 1001 int maxlen max max int maxlen string str1,string str2 return maxlen len1 len2 int main ...