https://www.51nod.com/tutorial/course.html#!courseId=3

转移方程: 注意如何对齐的。

这个算法的特点是,S和T字符串左边始终是对齐的。为了更好地理解这个算法中的递推公式,我们把两个字符串按照特定方式对齐。

以字符串S=ALGORITHM和T=ALTRUISTIC为例:

S和T的字符对齐方式为,假设我们已经知道最优的编辑方式:

  • 如果删去S中字符,则该字符对齐T中的空格
  • 如果删去T中字符,则该字符对齐S中的空格
  • 如果替换S中字符为T中字符,则这两个字符对齐

$dp[i][j]$表示字符串s从1到i与字符串t从1到j的最小编辑距离。

 #include<bits/stdc++.h>
#define INF 0x3f3f3f
using namespace std;
typedef long long ll;
char s[],t[];
int dp[][];
int main(){
scanf("%s",s+);
scanf("%s",t+);
int n=strlen(s+);
int m=strlen(t+);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
dp[i][j]=INF;
}
}
for(int i=;i<=n;i++) dp[i][]=i;
for(int j=;j<=m;j++) dp[][j]=j; for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
dp[i][j]=min(dp[i][j],dp[i-][j-]+(s[i]==t[j]?:));
dp[i][j]=min(dp[i][j],dp[i-][j]+);
dp[i][j]=min(dp[i][j],dp[i][j-]+);
}
} printf("%d\n",dp[n][m]);
return ;
}

[dp]编辑距离问题的更多相关文章

  1. DP编辑距离

    俄罗斯科学家Vladimir Levenshtein在1965年提出了编辑距离概念. 编辑距离,又称Levenshtein距离,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数.许可的三种编 ...

  2. 51nod 1183 - 编辑距离 - [简单DP][编辑距离问题][Levenshtein距离问题]

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1183 编辑距离,又称Levenshtein距离(也叫做Edi ...

  3. POJ3356 – AGTC(区间DP&&编辑距离)

    题目大意 给定字符串X和Y,可以对字符串进行一下三种操作: 1.删除一个字符 2.插入一个字符 3.替换一个字符 每个操作代价是1,问运用以上三种操作把X变为Y所需的最小步数是多少? 题解 定义dp[ ...

  4. 经典dp 编辑距离

    给定两个字符串S和T,对于T我们可以进行三种操作 (1)在任意位置增加字符 (2)删除字符 (3)替换字符 问最少多少次能把T变成S? 设f(i,j)是S的前i位和T的前j位对齐的最小花费 接下来分析 ...

  5. 51nod 1183 编辑距离(dp)

    题目链接:51nod 1183 编辑距离 #include<cstdio> #include<cstring> #include<algorithm> using ...

  6. Codeforces 56D Changing a String 编辑距离 记忆dp

    主题链接:点击打开链接 编辑距离.,== 一边dp虽然录制前体累,,依然是dp #include<iostream> #include<cstdio> #include< ...

  7. POJ 3356 AGTC(DP求字符串编辑距离)

    给出两个长度小于1000的字符串,有三种操作,插入一个字符,删除一个字符,替换一个字符. 问A变成B所需的最少操作数(即编辑距离) 考虑DP,可以用反证法证明依次从头到尾对A,B进行匹配是不会影响答案 ...

  8. (编辑距离问题 线性DP) nyoj1431-DNA基因鉴定

    题目描述: 我们经常会听说DNA亲子鉴定是怎么回事呢?人类的DNA由4个基本字母{A,C,G,T}构成,包含了多达30亿个字符.如果两个人的DNA序列相差0.1%,仍然意味着有300万个位置不同,所以 ...

  9. HDU 4323 Magic Number(编辑距离DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=4323 题意: 给出n个串和m次询问,每个询问给出一个串和改变次数上限,在不超过这个上限的情况下,n个串中有多少个 ...

随机推荐

  1. 每天一个Linux命令(16)which命令

    which命令用于查找并显示给定命令的绝对路径. 环境变量PATH中保存了查找命令时需要遍历的目录.which指令会在环境变量$PATH设置的目录里查找符合条件的文件.也就是说,使用which命令,就 ...

  2. 每天一个Linux命令(9)mv命令

    mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中. 注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加.而cp对文件进行复制,文件个数增加了.     (1) ...

  3. python cookbook 迭代器与生成器

    代理迭代 a = [1, 2, 3] for i in iter(a): print(i) for i in a.__iter__(): print(i) 这里的两个方法是一样的,调用iter()其实 ...

  4. Data Structure Array: Sort elements by frequency

    http://www.geeksforgeeks.org/sort-elements-by-frequency-set-2/ #include <iostream> #include &l ...

  5. RabbitMQ点对点的模式

    1.点对点模式  一对一模式.  一个生产者投递消息给队列 只能允许有一个消费者进行消费    如果集群的话 会进行均摊消费   服务器配置不一样 均摊就不优了 长连接 不用三次握手之类的 提高传输效 ...

  6. Web container==Servlet container

    Web container From Wikipedia, the free encyclopedia   (Redirected from Servlet container)     Web co ...

  7. JAVAScript中DOM与BOM的差异分析

    JAVAScript 有三部分构成,ECMAScript,DOM和BOM,根据浏览器的不同,具体的表现形式也不尽相同.我们今天来谈一谈DOM和BOM这俩者之间的差异. 用百科上的来说: 1. DOM是 ...

  8. c语言代码风格

    简要:主要介绍了K&R风格和Allman(BSD)风格之间的缩进大小和大括号位置等区别 关于其它的代码风格,详见:Indent style - Wikipedia. 1.K&R sty ...

  9. ES doc_values介绍——本质是field value的列存储,做聚合分析用,ES默认开启,会占用存储空间(列存储压缩技巧,除公共除数或者同时减去最小数,字符串压缩的话,直接去重后用数字ID压缩)

    doc_values Doc values are the on-disk data structure, built at document index time, which makes this ...

  10. Java_注解_00_资源贴

    1.Java注解教程:自定义注解示例,利用反射进行解析 2. (1)深入理解Java:注解(Annotation)基本概念 (2)深入理解Java:注解(Annotation)自定义注解入门 (3)深 ...