博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51Nod 1183 - 编辑距离(DP)
阅读量:4358 次
发布时间:2019-06-07

本文共 769 字,大约阅读时间需要 2 分钟。

【题目描述】

在这里插入图片描述

【思路】

dp[i][j]dp[i][j]dp[i][j] 表示把字符串a的前i个字符变成字符串b的前j个字符的编辑距离,有转移方程
dp[i+1][j+1]={dp[i][j]+(a[i]==b[j] ? 0: 1)dp[i][j+1]+1dp[i+1][j]+1dp[i+1][j+1]=\begin{cases} dp[i][j]+(a[i]==b[j] \ ? \ 0: \ 1) \\ dp[i][j+1]+1 \\ dp[i+1][j]+1 \end{cases}dp[i+1][j+1]=dp[i][j]+(a[i]==b[j] ? 0: 1)dp[i][j+1]+1dp[i+1][j]+1
第一项表示在将a的前i项变成b的前j项的基础上再添加一个字符,如果字符不同则修改
第二项表示将a的前i+1项删掉最后1项,再将剩下的i项变为b的前j+1项
第三项表示将a的前i+1项变成b的前j项,再添加一个字符变为b的前j+1项

#include
using namespace std;const int inf=2e9;const int maxn=1005;int lens,lent;char s[maxn],t[maxn];int dp[maxn][maxn];int main(){ scanf("%s%s",s,t); lens=strlen(s); lent=strlen(t); for(int i=0;i<=lens;++i) dp[i][0]=i; for(int j=0;j<=lent;++j) dp[0][j]=j; for(int i=0;i

转载于:https://www.cnblogs.com/wafish/p/10465109.html

你可能感兴趣的文章
spring 的单例模式
查看>>
Python学习手册
查看>>
完整的系统帮助类Utils
查看>>
使用PowerShell批量注册DLL到GAC
查看>>
递归算法
查看>>
ubuntu 17.04 添加用户到sudo组
查看>>
Differences between page and segment
查看>>
Jdk与Tomcat配置与安装
查看>>
关于一个Java web与JFrame的深度结合
查看>>
VB连数据库conn.open的参数
查看>>
《信息安全系统设计基础》实验三
查看>>
SpringBoot Docs
查看>>
解决sublime text 2总是在新窗口中打开文件(标签中打开)
查看>>
VUE AntDesign DatePicker设置默认显示当前日期
查看>>
WIN32窗口模板
查看>>
859. Buddy Strings - LeetCode
查看>>
[置顶] 关键字弹出动画
查看>>
支付宝api指南
查看>>
03 复习 代码
查看>>
博客搬家了
查看>>