51nod 1183 编辑距离
来源:互联网 发布:北京seo公司哪家好 编辑:程序博客网 时间:2024/06/04 17:53
给出两个字符串a,b,求a和b的编辑距离。
dp[i][j],字符串a:1-i 和字符串b:1-j 最小距离。
对于当前a[i]和b[j].如果a[i]等于b[j],那么dp[i][j]=dp[i][j]
如果不相等的话可能a变,可能b变。dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+1)
#include <iostream>
#include <cstring>
#include <cstdio>
const int MAX = 1e3 + 5;
char arr1[MAX];
char arr2[MAX];
int dp[MAX][MAX];
int tmp_min(int a, int b, int c)
{
if (a > b)
a = b;
if (a > c)
return c;
else
return a;
}
int main()
{
scanf("%s%s", arr1 + 1, arr2 + 1);
int lenth1 = strlen(arr1 + 1);
int lenth2 = strlen(arr2 + 1);
for (int i = 0; i <= lenth1; ++i)
dp[i][0] = i;
for (int j = 0; j <= lenth2; ++j)
dp[0][j] = j;
for (int i = 1; i <= lenth1; ++i)
{
for (int j = 1; j <= lenth2; ++j)
{
int cost = arr1[i] == arr2[j] ? 0 : 1;
dp[i][j] = tmp_min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + cost);
}
}
std::cout << dp[lenth1][lenth2] << std::endl;
return 0;
}
- 51nod 1183 编辑距离
- 51nod 1183 编辑距离
- 51nod 1183 编辑距离
- 51nod 1183 编辑距离
- [51nod]1183 编辑距离
- 51 nod 1183 编辑距离
- 51nod--1183 编辑距离
- 51nod 1183 编辑距离
- 51nod 1183 编辑距离
- 51Nod 1183 编辑距离
- 51nod 1183 编辑距离
- 51Nod 1183 编辑距离
- 51Nod 1183编辑距离
- 51Nod 1183编辑距离
- 51Nod-1183-编辑距离
- 51Nod 1183:编辑距离
- 51nod 1183 编辑距离
- 51Nod-1183 编辑距离
- Android中一些错误
- spark tungsten-sort shuffle
- [LeetCode]36. Valid Sudoku
- 【1402】数字根
- 筛选质数
- 51nod 1183 编辑距离
- 基于WFST的字素因素转换(g2p):开源组件
- 对象序列化中java.io.InvalidClassException的解决方法
- java中的各种数据类型在内存中存储的方式
- TCP/IP-数据链路层
- java部分数据类型之间的转换
- 浓墨重彩之MySQL-08-表单查询(2)
- 异常
- Java的常用的代码块(一)