您的位置:首页 > 其它

最小编辑代价

2016-08-11 20:18 169 查看
#include "iostream"
#include "string"
#include <algorithm>
#include <vector>
using namespace std;
int findMinCost(string A, int n, string B, int m, int c0, int c1, int c2) {
int dp[256][256];
memset(dp, 0, sizeof(int) * 256 * 256);
for (int i = 1; i <= n;i++)
dp[i][0] = dp[i - 1][0] + c1;
for (int j = 1; j <= m; j++)
dp[0][j] = dp[0][j - 1] + c0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (A[i - 1] == B[j - 1])
dp[i][j] = dp[i - 1][j - 1];
else
dp[i][j] = min(dp[i - 1][j - 1] + c2, min(dp[i][j - 1] + c0, dp[i - 1][j] + c1));
}
}
return dp
[m];
}

//测试
int main(int argc, char const *argv[])
{
string s1 = "abc", s2 = "adc";
cout << findMinCost(s1, 3, s2, 3, 5, 3, 100) << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: