最小編輯代價(動態規劃)

2021-07-08 15:29:59 字數 939 閱讀 9628

**實現:對於不同的要求,主要是找到求dp[i][j]的規律。

#include #include #include #include #include #include #include using namespace std;

#define max_length 50 //字串的最大長度

/* 求出dp[i][j] 代表從str1[0..i],變為str2[0..j]的最小代價

為了方便計算。str1和str2字串前都加上乙個空格

*/int mincost(const char* str1, const char* str2,const int ic, const int dc, const int rc)

int rows = strlen(str1) + 1;

int cols = strlen(str2) + 1;

int dp[max_length][max_length] = ;

int i = 0, j = 0;

/* 求出dp第一列 */

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

/* 求出第一行 */

for(j = 1; j < cols; j++)

/* 求出餘下的dp數值 */

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

else

dp[i][j] = min(dp[i][j], dp[i][j-1] + ic); //插入

dp[i][j] = min(dp[i][j], dp[i-1][j] + dc); //刪除}}

return dp[rows-1][cols-1];

}int main()

最小編輯代價(動態規劃)

在nowcoder上的題目,原題如下 對於兩個字串a和b,我們需要進行插入 刪除和修改操作將a串變為b串,定義c0,c1,c2分別為三種操作的代價,請設計乙個高效演算法,求出將a串變為b串所需要的最少代價。給定兩個字串a和b,及它們的長度和三種操作代價,請返回將a串變為b串所需要的最小代價。保證兩串...

最小編輯代價 動態規劃

對於兩個字串a和b,我們需要進行插入 刪除和修改操作將a串變為b串,定義c0,c1,c2分別為三種操作的代價 給定三種操作代價,字串a和b,求出將a串變為b串所需要的最少代價。保證兩串長度均小於等於300,且三種代價值均小於等於100。測試樣例 5 3 100 abc adc 返回 8 public...

最小編輯代價 動態規劃

題目描述 給定兩個字串str1和str2,再給定三個整數ic,dc和rc,分別代表插入 刪除和替換乙個字元的代價,請輸出將str1編輯成str2的最小代價。示例1輸入 abc adc 5,3,2 返回值 2 示例2輸入 abc adc 5,3,100 返回值 8 備註 1 str1 str2 500...