題目:
思考:(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 ...