您的位置:首页 > 其它

20140914 【 动态规划 】 51nod 1183 . 编辑距离

2014-09-14 19:15 344 查看






















1






徐华杰





动态规划 柔性字符串匹配 修改

1183 . 编辑距离

基准时间限制:1 秒 空间限制:65536 KB 分值: 0

编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
例如将kitten一字转成sitting:
sitten (k->s)
sittin (e->i)
sitting (->g)
所以kitten和sitting的编辑距离是3。俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。
给出两个字符串a,b,求a和b的编辑距离。

Input
第1行:字符串a(a的长度 <= 1000)。
第2行:字符串b(b的长度 <= 1000)。

Output
输出a和b的编辑距离

Input 示例
kitten
sitting

Output 示例
3


关注该问题 | 收藏 | 添加评论


OJ
使用说明

我的提交记录: 1

排行榜: 43

相关的讨论
请选择语言:
CC++C#
JavaPascal 允许其他人查看提交的代码

编号相关问题分值
1006最长公共子序列Lcs0
1277字符串中的最大值40
1088最长回文子串5
1089最长回文子串 V2160
1157全是1的最大子矩阵40
0
分值

122
提交

60
AC










问题状态

我的提交记录: 1
所有的提交记录: 122
Accepted的记录: 60
Accepted排行: 43
相关的讨论
浏览次数: 516































































































你还未设定位置信息


我的身边


我的收藏


我准备回答的问题


@提到我的


邀请我回答的问题


今日问题


好友的推荐


邀请好友一起来点头 2



扫一扫二维码加入51Nod

线下技术交流微信群




新手入门 | 使用指南 | 建议反馈

来自
WiKi 的模板:


整數 Levenshtein距離(字符 str1[1..lenStr1], 字符 str2[1..lenStr2])
宣告 int d[0..lenStr1, 0..lenStr2]
宣告 int i, j, cost

對於 i 等於  0  lenStr1
d[i, 0] := i
對於 j 等於  0  lenStr2
d[0, j] := j

對於 i 等於  1  lenStr1
對於 j 等於  1  lenStr2
 str1[i] = str2[j]  cost := 0
否則 cost := 1
d[i, j] := 最小值(
d[i-1, j  ] + 1,     // 刪除
d[i  , j-1] + 1,     // 插入
d[i-1, j-1] + cost   // 替換
)

返回 d[lenStr1, lenStr2]


实际上 与DNA比较类似。。

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
#define MAXN 1010
string s, e;
int f[MAXN][MAXN];
int main(){
cin>>s>>e;
for(int i=0; i<s.size(); i++)   f[i][0] = i;
for(int j=0; j<e.size(); j++)   f[0][j] = j;
for(int i=1; i<=s.size(); i++){
for(int j=1; j<=e.size(); j++){
int c = (s[i-1]!=e[j-1]);
f[i][j] = min( f[i-1][j-1]+c,
min( f[i-1][j]+1, f[i][j-1]+1 ) );
}
}
cout<< f[s.size()][e.size()] <<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: