编辑距离 (dp)

DP算法之最短编辑距离 题目描述 给定两个字符串A和B,现在要将A经过若干操作变为B,可进行的操作有: 删除–将字符串A中的某个字符删除。 插入–在字符串A的某个位置插入某个字符。 替换–将字符串A中的某个字符替换为另一个字符。 现在请你求出,将A变为B至少需要进行多少次操作。 输入格式 第一行包含整数n,表示字符串A的长度。 第二行包含一个长度为n的字符串A。 第三行包含整数m,表示字符串B的长度。 第四行包含一个... 阅读详情

编辑距离

编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
例如将kitten一字转成sitting:
sitten (k->s)
sittin (e->i)
sitting (->g)
所以kitten和sitting的编辑距离是3。俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。
给出两个字符串a,b,求a和b的编辑距离。

Input 第1行:字符串a(a的长度 <= 1000)。
第2行:字符串b(b的长度 <= 1000)。 Output 输出a和b的编辑距离 Sample Input
kitten
sitting
Sample Output
3
我们用字符串“ivan1”和“ivan2”举例来看看矩阵中值的状况:

1、第一行和第一列的值从0开始增长
这里写图片描述
图一

首先我们先创建一个矩阵,或者说是我们的二维数列,假设有两个字符串,我们的字符串的长度分别是m和n,那么,我们矩阵的维度就应该是(m+1)*(n+1).

注意,我们先给数列的第一行第一列赋值,从0开始递增赋值。我们就得到了图一的这个样子

之后我们计算第一列,第二列,依次类推,算完整个矩阵。

我们的计算规则就是:
d[i,j]=min(d[i-1,j]+1 、d[i,j-1]+1、d[i-1,j-1]+temp) 这三个当中的最小值。

其中:str1[i] == str2[j],用temp记录它,为0。否则temp记为1

我们用d[i-1,j]+1表示增加操作
d[i,j-1]+1 表示我们的删除操作
d[i-1,j-1]+temp表示我们的替换操作

2、举证元素的产生 Matrix[i - 1, j] + 1 ; Matrix[i, j - 1] + 1 ; Matrix[i - 1, j - 1] + t 三者当中的最小值
这里写图片描述

3.依次类推直到矩阵全部生成
这里写图片描述

这里写图片描述

这个就得到了我们的整个完整的矩阵。

code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int dp[1010][1010];
char a[1010],b[1010];
int same(char i,char j){
    if(i == j)
        return 0;
    else
        return 1;
}
int main(){
    int lena,lenb,i,j;
    while(scanf("%s%s",a,b) != EOF){
        lena = strlen(a);
        lenb = strlen(b);
        for(int i = 0; i <= lena; i++){
            dp[i][0] = i;//解释一下为什么是lena的时候先竖着赋值
            //其实我们是在看b串,也就是如果b是空串,a有多长就操作多少下,下面同理
        }
        for(int i = 0; i <= lenb; i++){
            dp[0][i] = i;
        }
        dp[0][0] = 0;
        for(int i = 1; i <= lena; i++){
            for(int j = 1; j <= lenb; j++){
                dp[i][j] = min(dp[i-1][j-1]+same(a[i-1],b[j-1]),min(dp[i-1][j]+1,dp[i][j-1]+1));
            }
        }
        printf("%d\n",dp[lena][lenb]);
    }
    return 0;
}

51nod 1183 编辑距离 dp 1183 编辑距离 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 例如将kitten一 阅读详情

相关推荐

SAP CO实战:如何用KKA2/CJ88结果分析码搞定项目收入成本匹配(附真实案例)

本文深入解析了SAP CO模块中结果分析码KKA2/CJ88的核心应用,通过真实案例详细阐述了如何在成本波动剧烈的销售型项目中,运用结果分析实现收入与成本的精准匹配。文章重点拆解了不同结果分析方法的适用场景与财务影响,并提供了从配置、操作到问题排查的完整实战指南,帮助财务顾问提升项目财务管理能力。

qsc9012345的博客 606

蓝桥杯DP专题

线性DP 1.数字三角形 刷题链接: link. 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输入格式 第一行包含整数n,表示数字三角形的层数。 接下来n行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。 输出格式 输出一个整数,表示最大的路径数字和。 数

zx428621的博客 1660

金融领域强化学习在多资产类别动态交易执行中的应用

在金融市场中,多资产类别的交易执行面临着诸多挑战,如市场的不确定性、资产间的复杂相关性等。传统的交易策略往往难以适应动态变化的市场环境。本研究的目的在于探索如何运用强化学习技术,实现多资产类别在动态市场环境下的高效交易执行。具体范围涵盖了从强化学习的基本原理到在多资产交易场景中的实际应用,包括核心算法的实现、数学模型的构建以及项目实战等方面。本文首先介绍研究背景,包括目的、预期读者和文档结构。接着阐述核心概念,包括强化学习和多资产类别动态交易执行的原理及其联系。

AI 领航者的博客 629

字符串的编辑距离(DP数组)

给定一个原始字符串S1和一个目标字符串S2,将S1到S2的编辑距离定义为S1编辑操作成S2所需的最小编辑次数。1.增加:在串s1上增加一个数据变为串s2,也就是说在在串2上删除一个元素故 dp[i][j] = dp[i][j-1]3.修改:将串1上的一个元素进行修改,也就是替换的过程,故dp[i][j] = dp[i-1][j-1] + 1;2.删除:在串1上删除一个数据变为串2,故dp[i][j] = dp[i-1][j]由串s1变为串s2的过程也可以理解为由串s2变为串s1的过程。

欢迎访问我的个人Blog网站:blog.homeryland.org 528

手把手教你用ESP32驱动MAX30102心率血氧传感器(含完整代码)

本文详细介绍了如何使用ESP32微控制器驱动MAX30102心率血氧传感器,构建智能健康监测系统。内容涵盖PPG原理、硬件连接、驱动配置、信号处理算法以及Web服务器数据可视化,提供完整代码实现,帮助开发者快速上手物联网健康设备开发。

weixin_29208077的博客 586

MIPI信号的分析--结合示波器实际测试波形

如果排查的思路对你有帮助,请记住 消雨匆匆 or 大吊工。码字和排查很累,仅此而已 ,硬件不是抄电路,拿烙铁,懂点软件,细致分析,找问题和破案搜集线索是一样的。 部分内容来自于此博客的大神总结: http://www.elecfans.com/news/wangluo/20170323499614.html http://www.elecfans.com/yuanqijian/jieko...

消雨匆匆 4万+

“编辑距离”系列总结,一文读懂(Java实现)

面试遇到,还不得装一装(doge)

CYK_byte的博客 2039

Coze工作流实战:Coze一键生成沉浸式历史故事视频

【coze工作流实战】一键生成火爆的沉浸式历史故事视频!短短3分钟,顶替你3天的工作量!

bickys的博客 1004

编辑距离 (dp)

编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 例如将kitten一字转成sitting: sitten (k->s) sittin (e->i) sitting (->g) 所以kitten和sitting的编辑距离是3。俄

J____xueming的博客 456

在Allegro设计界面中如何修改封装焊盘

在高密度板的情况下,SUIPLA(支持内层没有的焊盘摘掉)打勾,在高密度板的情况下,内层没有的焊盘摘掉可以增加走线的空间。3、修改完焊盘后,选择File→Update to Design(更新到设计)。然后关闭焊盘修改对话框即可。,将会定期不定期更新技术文章,互相学习交流。或者点击Options选项卡下要修改的焊盘,然后点击Edit修改。在Allegro PCB设计界面中修改封装焊盘的方法。2、然后点击封装上要修改的焊盘,右击选择Edit。修改完成后如下图所示。

bhxc809751502的博客 7806

基于Python实现学习进度跟踪系统

{{ task }}: {{ "%.1f"|format(hours) }}小时

寒寒豆豆软件公司的博客 195

【算法】最长公共子序列&编辑距离(两个序列之间的DP)

这两道题目的类似点在于都是比较两个序列之间的内容,这种情况下通常定义 dp 数组为:dp[m + 1][n + 1] (之所以 + 1 是为了方式遍历的过程中出现负数下标)与之对应,遍历元素的时候,使用的下标分别是 i - 1 和 j - 1。(因为原始数据的数据范围还是 0 ~ m 和 0~ n)由于无后效性,即 dp[i][j] 的数值只与和它接近的几个数字有关,因此可以优化 dp 数组的空间。

小威的博客 863

12、多端神经形态晶体管:原理、应用与算法探索

本文综述了多端神经形态晶体管的原理、应用与算法探索。从神经元MOS晶体管的发展到基于电解质栅极晶体管(EGT)的新型器件设计,系统阐述了其在低电压、多功能逻辑运算和突触行为模拟方面的优势。重点介绍了其在化学生物传感器(如多巴胺和pH检测)中的高灵敏度应用,以及在树突整合、时空总和、动态逻辑和神经元算术等树突算法中的实现。文章还总结了该类器件在神经形态计算、智能传感等领域的广阔前景,并分析了当前面临的材料工艺、理论建模与系统集成挑战,展望了未来发展方向。

delta的博客 143

线性dp:编辑距离

合集 - LeetCode(37)1.力扣151. 反转字符串中的单词07-092.LeetCode515.在每个树行中找最大值07-223.LeetCode104.二叉树的最大深度07-224.LeetCode111.二叉树的最小深度07-225.LeetCode136. 只出现一次的数字07-236.LeetCode260. 只出现一次的数字 III07-237.LeetCode151. 反转...

weixin_40942782的博客 156

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

线性DP—最短编辑距离&编辑距离

这道题可以用线性DP来求解,线性DP的特点是每次只需要考虑最后一个状态。

chp的博客 155

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

2025.4.19动态规划学习之最短编辑距离(线性DP)

比如:最长。

Jdhhsuhs的博客 1312

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

编辑距离-线性DP

加油!

m0_63613132的博客 474

编辑距离(线性DP)

一道洛谷上的线性动态规划习题

zhu134的博客 393

最短编辑距离(线性dp)-java

最短编辑问题也是一种非常经典的二维线性dp。

m0_63267251的博客 1594

【dp】编辑距离

今天刷题刷到这题一点思路都没有,看了题解后在此记录下。 首先,明确这题可以用dp求解,满足dp的三特征一模型。 问题的求解是多阶段最优决策问题,1.问题存在最优子结构,后阶段的解可以用前面阶段的解推出来;2.重复子问题,前面阶段解会多次被使用;3.无后效性问题,前面阶段的解与后面阶段无关。 dp的关键无疑是找到状态转移方程,而找到状态转移方程的关键是要定义好各阶段的状态是什么。 该题的状态其实还是容易想到的,定义dp[i][j]为str1到第i个字符为止,str2到第j个字符为止的编辑距离,此题难在定义好.

WenbinYao&YouweiHu 479

基础DP - 编辑距离

1183 编辑距离 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 例如将kitten一字转成sitting: si

Exchan 329

区间dp——编辑距离

原文链接:https://www.luogu.com.cn/problem/P2758 AC代码: #include<iostream> #include<string.h> #include<vector> #include<algorithm> using namespace std; int dp[2005][2005]; int main(...

qq_40892316的博客 210

编辑距离 dp_使用动态编程(DP)编辑距离

编辑距离 dpProblem: You are given two strings s1 and s2 of length M and N respectively. You can perform following operations on the string. 问题:给您两个长度分别为M和N的字符串s1和s2 。 您可以对字符串执行以下操作。 Insert a character a...

cumt951045的博客 275

线性DP学习笔记(一):最长公共子序列,编辑距离

ps:笔记和代码按本人理解整理,重思路

学习记录 1332

【51Nod】1183 - 编辑距离(dp & 编辑距离)

点击打开题目 1183 编辑距离 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一

wyg1997 699

【重点】【DP】72.编辑距离

二维DP,自底向上,参见《算法小抄》中的解释,更容易理解!

Allenlzcoder的博客 513
上一篇: 最长公共子序列Lcs
下一篇: 末尾零的个数(数论)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值