[dp]编辑距离问题
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]编辑距离问题的更多相关文章
- DP编辑距离
俄罗斯科学家Vladimir Levenshtein在1965年提出了编辑距离概念. 编辑距离,又称Levenshtein距离,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数.许可的三种编 ...
- 51nod 1183 - 编辑距离 - [简单DP][编辑距离问题][Levenshtein距离问题]
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1183 编辑距离,又称Levenshtein距离(也叫做Edi ...
- POJ3356 – AGTC(区间DP&&编辑距离)
题目大意 给定字符串X和Y,可以对字符串进行一下三种操作: 1.删除一个字符 2.插入一个字符 3.替换一个字符 每个操作代价是1,问运用以上三种操作把X变为Y所需的最小步数是多少? 题解 定义dp[ ...
- 经典dp 编辑距离
给定两个字符串S和T,对于T我们可以进行三种操作 (1)在任意位置增加字符 (2)删除字符 (3)替换字符 问最少多少次能把T变成S? 设f(i,j)是S的前i位和T的前j位对齐的最小花费 接下来分析 ...
- 51nod 1183 编辑距离(dp)
题目链接:51nod 1183 编辑距离 #include<cstdio> #include<cstring> #include<algorithm> using ...
- Codeforces 56D Changing a String 编辑距离 记忆dp
主题链接:点击打开链接 编辑距离.,== 一边dp虽然录制前体累,,依然是dp #include<iostream> #include<cstdio> #include< ...
- POJ 3356 AGTC(DP求字符串编辑距离)
给出两个长度小于1000的字符串,有三种操作,插入一个字符,删除一个字符,替换一个字符. 问A变成B所需的最少操作数(即编辑距离) 考虑DP,可以用反证法证明依次从头到尾对A,B进行匹配是不会影响答案 ...
- (编辑距离问题 线性DP) nyoj1431-DNA基因鉴定
题目描述: 我们经常会听说DNA亲子鉴定是怎么回事呢?人类的DNA由4个基本字母{A,C,G,T}构成,包含了多达30亿个字符.如果两个人的DNA序列相差0.1%,仍然意味着有300万个位置不同,所以 ...
- HDU 4323 Magic Number(编辑距离DP)
http://acm.hdu.edu.cn/showproblem.php?pid=4323 题意: 给出n个串和m次询问,每个询问给出一个串和改变次数上限,在不超过这个上限的情况下,n个串中有多少个 ...
随机推荐
- php面向对象加载类
php加载类: 新建php文件用驼峰法命名类名: 每个单词首字母大写,后面加.class.php表示这是php类文件.例如: ClubMember.class.php 若为纯php页面,<?ph ...
- HDU - 1033 Edge 【模拟】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1033 题意 给定一个起始点 300 420 走的第一步是 310 420 下面的每一步 都由 输入决定 ...
- 每天一个Linux命令(31)diff命令
diff命令在最简单的情况下,比较给定的两个文件的不同.如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入.diff命令是以逐行的方式,比较文本文件的异同处.如果该命令指定进行目录的比较,则 ...
- vRA Customizing error
toolsDeployPkg.log An error occurred while customizing VM vwbjvuqtest0751. For details reference the ...
- 算法(Algorithms)第4版 练习 2.1.27
package com.qiusongde; import edu.princeton.cs.algs4.StdOut; public class Exercise2127 { public stat ...
- Sqoop-1.4.4工具import和export使用详解
转自:http://blog.csdn.net/wodatoucai/article/details/46343291 Sqoop可以在HDFS/Hive和关系型数据库之间进行数据的导入导出,其中主要 ...
- JavaWeb -- Session应用实例 -- 随机中文验证码 检验
注册页面 login.html <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html ...
- js混合计算字符串字节长度
js混合计算字符串字节长度 function getBt(str) { ) { var char = str.match(/[^\x00-\xff]/ig); : char.length); } el ...
- 基于js的网页换肤(不需要刷新整个页面,只需替换css文件)
1. [代码][JS]代码 <HTML><HEAD><link ID="skin" rel="stylesheet" typ ...
- mysql连接超时问题
前几天使用个脚本不停的查看redis队列中的事件.如果有则把事件取出来,然后进行一些数据库操作. 后来发现,每天的第一次有事件时都会到导致,找不到数据. 后来定位到问题,是mysql在连接长时间无活动 ...