dp中最短编辑距离的笔记(分析dp)

dp分析往往就是看最后一步的变化。

分析:

 设a串长度为i,b串长度为j。题目要求为通过三种操作将a字符串转化为b字符串的最少次数。

删除操作:

                把a[i]删除后a[1~i]和b[1~j]匹配,所以可以得到f[i - 1][j] + 1,在此之前要先做到a[1~i-1]和b[1~j]匹配。

增加操作:

                将a[i + 1]添加后a[1~i]和b[1~j]匹配,所以可以得到f[i][j - 1] + 1,在此之前先要得到a[1~i]和b[1~j - 1]匹配。

替换操作:

               如果a[i]和a[j]的值相等,那么得到f[i - 1][j - 1]。如果不相等那么得到f[i - 1][j - 1] + 1。无论a[i]和a[j]的值是否相等,a[1~i -1]和b[1~j - 1]都是匹配的。

 

代码如下:

//最短距离编辑
//dp的分类一般都是考虑最后一步的选法
#include<iostream>
using namespace std;
const int N = 1e3 + 9;
int n, m, f[N][N];
char a[N], b[N];int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin >> n >> a + 1;cin >> m >> b + 1;//特殊情况:a有0个字符串,需要增加b长度的字符串次操作for (int i = 0; i <= m; ++i) f[0][i] = i;//特殊情况:b有0个字符串,需要删除a长度的字符串次操作for (int i = 0; i <= n; ++i) f[i][0] = i;for (int i = 1; i <= n; ++i){for (int j = 1; j <= m; ++j){f[i][j] = min(f[i - 1][j] + 1, f[i][j - 1] + 1);if (a[i] == b[j]) f[i][j] = min(f[i - 1][j - 1], f[i][j]);else f[i][j] = min(f[i - 1][j - 1] + 1, f[i][j]);}}cout << f[n][m];return 0;
}

 主要上述代码中特殊情况的初始化。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/228771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连锁管理系统是什么?有哪些功能?

连锁管理系统帮助门店实现POS收银管理、门店管理、采购订货管理、线上商城搭建、供应链管理一体化管理系统&#xff0c;快速提高门店管理效率&#xff0c;无论你的门店有多少&#xff0c;连锁总部都能通过系统随时洞察监管门店的所有运营数据。 连锁管理系统由&#xff1a;1个…

Eslint 要被 Oxlint替换了吗

什么是 Oxlint 由于最近的rust在前端领域的崛起,基于rust的前端生态链遭到rust底层重构,最近又爆出OxLint,是一款基于Rust的linter工具。Oxlint在国外前端圈引起热烈讨论,很多大佬给出了高度评价。 事实上,Oxlint 是 Oxc 项目旗下的一款产品,专为 JavaScript 和 TypeSc…

Java解决不同路径问题

Java解决不同路径问题 01 题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少…

win11 激活

首先是查看 win11 到期的命令 slmgr.vbs /xpr 下载地址 沧水的KMS服务 - Kms激活|Windows激活|Office激活|Windows下载|Office下载|搭建KMS服务器 直接本地下载

linux修改mysql默认端口(很明智的选择因为后面会遇到各种问题)

1. 登录到mysql查看当前的端口号&#xff1a; show global variables like ‘port’; 2.编辑/etc/my.conf 文件添加port3506 这样的样式 保存退出&#xff1b; 内容: mysqld] port3506 datadir/var/lib/mysql socket/var/lib/mysql/mysql.sock usermysql # Disabling sy…

【CMU 15-445】Lecture 10: Sorting Aggregations Algorithms 学习笔记

Sorting & Aggregations Algorithms SortingTop-N Heap SortExternal Merge Sort2-WAY External Merge SortK-WAY External Merge SortDouble Buffering Optimization AggregationsSortingHashing 本节课主要介绍的是数据库系统中的排序算法以及聚合算法 Sorting 排序算法…

17 Vue3中的emit传值

概述 We have already seen that props are used to pass data from a parent component to a child component. To pass data from a child component back to a parent component, Vue offers custom events. 我们已经看到&#xff0c;道具用于将数据从父组件传递到子组件。…

【TB作品】51单片机 实物+仿真-电子拔河游戏_亚博 BST-M51

代码工程。 http://dt4.8tupian.net/2/28880a66b12880.pg3这段代码是用于一个数字拔河游戏的嵌入式系统&#xff0c;采用了基于8051架构的单片机&#xff0c;使用Keil C51编译器。 主要功能包括&#xff1a; 数码管显示&#xff1a;使用了四个数码管&#xff08;通过P2的控制…

React Hooks解决了什么问题?

前言 之前被面试官问到hooks解决了什么问题&#xff0c;当时就说了一部分&#xff0c;还是决定总结一下&#xff0c;毕竟临场发挥肯定会说不全。 React Hooks React Hooks 是 React 16.8 引入的一项重要功能&#xff0c;它解决了一些在使用类组件时存在的问题&#xff0c;并…

Redis分布式锁和Java锁的区别

Redis分布式锁和Java锁的主要区别在于它们的适用范围和实现机制。 适用范围&#xff1a; 在多机部署的情况下&#xff0c;Java锁只能锁定当前机器上的请求&#xff0c;无法对其他机器的请求进行加锁。这是因为Java锁使用的是JVM的机制&#xff0c;只在本机生效。然而&#xf…

【华为数据之道学习笔记】5-4 数据入湖方式

数据入湖遵循华为信息架构&#xff0c;以逻辑数据实体为粒度入湖&#xff0c;逻辑数据实体在首次入湖时应该考虑信息的完整性。原则上&#xff0c;一个逻辑数据实体的所有属性应该一次性进湖&#xff0c;避免一个逻辑实体多次入湖&#xff0c;增加入湖工作量。 数据入湖的方式…

配置 vim 默认显示行号 行数 :set number

vi ~/.vimrc 最后添加一行 :set number保存退出&#xff0c;再次 vim 打开文件&#xff0c;默认就会显示行号了

Feign-实现Feign最佳实践

目录 一、实现最佳实践的步骤&#xff08;方式二&#xff09; 1.1 首先创建一个module&#xff0c;命名为feign-api&#xff0c;然后引入feign的starter依赖 1.2.将order-service中编写的UserClient、User、DefaultFeignConfiguration都复制到feign-api项目 1.3.在order-se…

Kali Linux安装Xrdp远程桌面工具结合内网穿透实现远程访问Kali桌面

文章目录 前言1. Kali 安装Xrdp2. 本地远程Kali桌面3. Kali 安装Cpolar 内网穿透4. 配置公网远程地址5. 公网远程Kali桌面连接6. 固定连接公网地址7. 固定地址连接测试 前言 Kali远程桌面的好处在于&#xff0c;它允许用户从远程位置访问Kali系统&#xff0c;而无需直接物理访…

vulnhub7

靶机地址&#xff1a;https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova 这次的靶机风格比较偏向 OSCP 风格&#xff0c;区别于传统的 CTF 类型的靶机&#xff0c;只需要提权到 root 即可&#xff0c;而且这次打靶确实触碰到很多知识盲区了 提示&#xff1a;本地…

安卓开发学习---kotlin版---笔记(二)

UI学习 UI分类 安卓的UI分为两大类&#xff1a;一类叫做View视图&#xff0c;一类叫做ViewGroup容器 View视图&#xff1a;TextView,Button,ImageView都是常见的视图ViewGroup容器&#xff1a;内部尅承载、放置、添加View视图的容器 布局方式 安卓布局主要有&#xff1a;线…

【Qt图书管理系统】4.系统设计与详细设计

文章目录 核心流程图软件架构设计流程图软件开发类图及功能点 核心流程图 用户登录图书查询图书借阅图书归还账户管理 软件架构设计 流程图 软件开发类图及功能点 Dlg_Login 登录界面 Cell_Main 主窗体 Cell_MyBook 我的书籍 Cell_BookMgr 书籍管理 Cell_RecoredMgr 借阅记录…

FC-13A(用于汽车应用的kHz范围晶体单元,低轮廓贴片)

FC-13A晶体非常适合用在汽车导航系统设计中的应用&#xff0c;是一种具有优异的频率性能和AEC-Q200标准认证的汽车工业级高精度晶体,FC-13A是一款尺寸为3.2 1.5 0.9mm&#xff0c;频率范围32.768KHz耐高温晶振&#xff0c;频率温度系数仅为-0.04ppm/℃&#xff0c;并且其老化…

2023年四川网信人才技能大赛 决赛 实操赛Web ezbbs Writeup

题目是一个BSS论坛&#xff0c;如图 尝试注册发现注册未开放 题目给了jar包以及给了一个提示条件竞争绕过&#xff0c;分析源码&#xff1a; /register、/login接口都在com.my.bbs.controller.rest.BBSUserController 首先cacheUser是BBSUser类型的私有属性&#xff0c;并且reg…

Socket全连接、半连接队列与Listen函数的Backlog参数深度解析

当涉及到网络编程和Socket通信时&#xff0c;理解全连接队列和半连接队列是至关重要的。它们是操作系统中用于管理传入连接请求的两个关键概念&#xff0c;而listen()函数中的backlog参数则直接涉及到这两个队列的调节和管理。 全连接队列和半连接队列 全连接队列&#xff08…