51Nod - 1183 编辑距离
问题:找出字符串的编辑距离,即把一个字符串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 编辑距离相关推荐
- (DP)51NOD 1183 编辑距离
编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除 ...
- 51nod 基础题题解(全)
基础题(40): 1000 A + B 1005 大数加法 1006 最长公共子序列Lcs 1018 排序 1019 逆序数 1027 大数乘法 1046 A^B Mod C 1057 N的阶乘(大数 ...
- 由动态规划计算编辑距离引发的思考
简单介绍 编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the- ...
- 字符串编辑距离(Edit Distance)
一.问题描述 定义 字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符 ...
- Levenshtein distance 编辑距离算法
这几天再看 virtrual-dom,关于两个列表的对比,讲到了 Levenshtein distance 距离,周末抽空做一下总结. Levenshtein Distance 介绍 在信息理论和计算 ...
- 51nod 1617 奇偶数组
传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧--然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...
- Levenshtein 相似度算法——Levenshtein(编辑距离)
https://www.iteye.com/blog/wdhdmx-1343856 原文讲的挺有道理的: 奇妙的地方就是将字符串的对比,转换为了数值之间的计算: 相似度算法--Levenshtein( ...
- 51NOD 1773:A国的贸易——题解
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1773 参考1:FWT讲解 https://www.cnblogs.com ...
- 余弦距离(Cosine距离)与编辑距离分别是什么?各有什么优势和使用场景?
余弦距离(Cosine距离)与编辑距离分别是什么?各有什么优势和使用场景? import numpy as np from sklearn.metrics import pairwise_distan ...
最新文章
- html 模板引擎 热部署,springboot系列四、配置模板引擎、配置热部署
- 外部方法调用内部_私有属性和私有方法
- redis-sentinel主从复制高可用
- 诡异的DateTime.TryParseExact方法
- 论文浅尝 | 神经网络是如何外推的:从前馈神经网络到图神经网络
- linux查看tomcat启动内存溢出,关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论-Fun言...
- Zebra命令模式分析
- 成功解决:ubuntu安装nginx时报错Failed to start A high performance web server and a reverse proxy server.
- 【入门书籍】新手入门机器学习,强烈推荐这几本书籍
- c语言 mongodb,MongoDB的C语言编程实例
- C# 利用iTextSharp画PDF
- html代码在线运行_在线运行html代码
- 基于jsp+mysql+Spring+SpringMVC+mybatis的大学生缴费系统-计算机毕业设计
- Java基础视频教程,带你系统全面入门Java
- Resional Rose使用说明
- 思科CCNA认证课程内容
- 红米无线连接服务器,电脑无线连接红米手机远程管理启动技巧
- 通过QQ号获取QQ头像、昵称以及空间头像
- 轻松主义或许是一剂良药!
- HDOJ 2021-2030
热门文章
- python部落稿酬_Python之父考虑重构Python解释器
- HTML animate()动画更改多个元素背景颜色但不同时生效问题
- java 静态代码块_关于Java你不知道的那些事之代码块
- 一、PHP框架Laravel——入门和安装
- 四、数据预处理——处理连续型特征:二值化与分段
- 二、前端pink老师的CSS定位学习笔记(超详细,简单易懂)
- fastapi 响应模型 / 响应状态码 / 表单参数
- LeetCode 1257. 最小公共区域(最小公共祖先)
- LeetCode 254. 因子的组合(回溯)*
- LeetCode 1099. 小于 K 的两数之和(二分查找)