问题:找出字符串的编辑距离,即把一个字符串s1最少经过多少步操作变成编程字符串s2,操作有三种,添加一个字符,删除一个字符,修改一个字符

解析:

首先定义这样一个函数——edit(i, j),它表示第一个字符串的长度为i的子串到第二个字符串的长度为j的子串的编辑距离。

显然可以有如下动态规划公式:

  • if i == 0 且 j == 0,edit(i, j) = 0
  • if i == 0 且 j > 0,edit(i, j) = j
  • if i > 0 且j == 0,edit(i, j) = i
  • if i ≥ 1  且 j ≥ 1 ,edit(i, j) == min{ edit(i-1, j) + 1, edit(i, j-1) + 1, edit(i-1, j-1) + f(i, j) },
  • 当第一个字符串的第i个字符不等于第二个字符串的第j个字符时,f(i, j) = 1;否则,f(i, j) = 0。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[1005],b[1005];
int dp[1005][1005];
int main()
{while(scanf("%s%s",a+1,b+1)!=EOF){int len1=strlen(a+1);int len2=strlen(b+1);for(int i=0;i<=len1;i++){dp[i][0]=i;}for(int j=0;j<=len2;j++){dp[0][j]=j;}for(int i=1;i<=len1;i++){for(int j=1;j<=len2;j++){dp[i][j]=min(dp[i-1][j-1]+(a[i]!=b[j]),min(dp[i-1][j]+1,dp[i][j-1]+1));        }}cout<<dp[len1][len2]<<endl;}return 0;
}

转载于:https://www.cnblogs.com/renwjing/p/7346013.html

51Nod - 1183 编辑距离相关推荐

  1. (DP)51NOD 1183 编辑距离

    编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除 ...

  2. 51nod 基础题题解(全)

    基础题(40): 1000 A + B 1005 大数加法 1006 最长公共子序列Lcs 1018 排序 1019 逆序数 1027 大数乘法 1046 A^B Mod C 1057 N的阶乘(大数 ...

  3. 由动态规划计算编辑距离引发的思考

    简单介绍 编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the- ...

  4. 字符串编辑距离(Edit Distance)

    一.问题描述 定义 字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符 ...

  5. Levenshtein distance 编辑距离算法

    这几天再看 virtrual-dom,关于两个列表的对比,讲到了 Levenshtein distance 距离,周末抽空做一下总结. Levenshtein Distance 介绍 在信息理论和计算 ...

  6. 51nod 1617 奇偶数组

    传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧--然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...

  7. Levenshtein 相似度算法——Levenshtein(编辑距离)

    https://www.iteye.com/blog/wdhdmx-1343856 原文讲的挺有道理的: 奇妙的地方就是将字符串的对比,转换为了数值之间的计算: 相似度算法--Levenshtein( ...

  8. 51NOD 1773:A国的贸易——题解

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1773 参考1:FWT讲解 https://www.cnblogs.com ...

  9. 余弦距离(Cosine距离)与编辑距离分别是什么?各有什么优势和使用场景?

    余弦距离(Cosine距离)与编辑距离分别是什么?各有什么优势和使用场景? import numpy as np from sklearn.metrics import pairwise_distan ...

最新文章

  1. html 模板引擎 热部署,springboot系列四、配置模板引擎、配置热部署
  2. 外部方法调用内部_私有属性和私有方法
  3. redis-sentinel主从复制高可用
  4. 诡异的DateTime.TryParseExact方法
  5. 论文浅尝 | 神经网络是如何外推的:从前馈神经网络到图神经网络
  6. linux查看tomcat启动内存溢出,关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论-Fun言...
  7. Zebra命令模式分析
  8. 成功解决:ubuntu安装nginx时报错Failed to start A high performance web server and a reverse proxy server.
  9. 【入门书籍】新手入门机器学习,强烈推荐这几本书籍
  10. c语言 mongodb,MongoDB的C语言编程实例
  11. C# 利用iTextSharp画PDF
  12. html代码在线运行_在线运行html代码
  13. 基于jsp+mysql+Spring+SpringMVC+mybatis的大学生缴费系统-计算机毕业设计
  14. Java基础视频教程,带你系统全面入门Java
  15. Resional Rose使用说明
  16. 思科CCNA认证课程内容
  17. 红米无线连接服务器,电脑无线连接红米手机远程管理启动技巧
  18. 通过QQ号获取QQ头像、昵称以及空间头像
  19. 轻松主义或许是一剂良药!
  20. HDOJ 2021-2030

热门文章

  1. python部落稿酬_Python之父考虑重构Python解释器
  2. HTML animate()动画更改多个元素背景颜色但不同时生效问题
  3. java 静态代码块_关于Java你不知道的那些事之代码块
  4. 一、PHP框架Laravel——入门和安装
  5. 四、数据预处理——处理连续型特征:二值化与分段
  6. 二、前端pink老师的CSS定位学习笔记(超详细,简单易懂)
  7. fastapi 响应模型 / 响应状态码 / 表单参数
  8. LeetCode 1257. 最小公共区域(最小公共祖先)
  9. LeetCode 254. 因子的组合(回溯)*
  10. LeetCode 1099. 小于 K 的两数之和(二分查找)