C++ 动态规划 线性DP 最短编辑距离

给定两个字符串 A
和 B
,现在要将 A
经过若干操作变为 B
,可进行的操作有:

删除–将字符串 A
中的某个字符删除。
插入–在字符串 A
的某个位置插入某个字符。
替换–将字符串 A
中的某个字符替换为另一个字符。
现在请你求出,将 A
变为 B
至少需要进行多少次操作。

输入格式
第一行包含整数 n
,表示字符串 A
的长度。

第二行包含一个长度为 n
的字符串 A

第三行包含整数 m
,表示字符串 B
的长度。

第四行包含一个长度为 m
的字符串 B

字符串中均只包含大小写字母。

输出格式
输出一个整数,表示最少操作次数。

数据范围
1≤n,m≤1000
输入样例:
10
AGTCTGACGC
11
AGTAAGTAGGC
输出样例:
4
在这里插入图片描述

#include <iostream>
#include <algorithm>using namespace std;const int N = 1010;
int n, m;
char a[N], b[N];
int f[N][N];int main ()
{scanf("%d", &n);scanf("%s", a + 1); scanf("%d", &m);scanf("%s", b + 1);for(int i = 0; i <= m; i ++ ) f[0][i] = i; // 初始化,只能添加,表示空字符串匹配到b串,有多少个字符就是几步for(int i = 0; i <= n; i ++ ) f[i][0] = i; // 初始化,表示想把a的前i个字母和b的前0个字符匹配,只能删除,有多少个删除几个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]) // 第三种情况,如果a[i] 已经等于b[j]了,就不需要加1了f[i][j] = min(f[i][j], f[i - 1][j - 1]);elsef[i][j] = min(f[i][j], f[i - 1][j - 1] + 1);}printf("%d\n", f[n][m]);return 0;
}

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

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

相关文章

论文浅尝 | 在图上思考:基于知识图谱的深度且负责的大语言模型推理

笔记整理&#xff1a;孙硕硕&#xff0c;东南大学硕士&#xff0c;研究方向为自然语言处理 链接&#xff1a;https://arxiv.org/abs/2307.07697 1. 动机 本文的动机是大型语言模型在各种任务中取得了较大的进步&#xff0c;但它们往往难以完成复杂的推理&#xff0c;并且在知识…

代码随想录|day 16

Day 16 迎财神 坚持如此hard 玄之又玄&#xff0c;众妙之门 一、理论知识 回顾【深度】和【高度】的概念&#xff0c;现在主要还是写递归2&#xff09; 初识【回溯】3&#xff09;左叶子的明确定义&#xff1a;节点A的左孩子不为空&#xff0c;且左孩子的左右孩子都为空&am…

Pytorch的可视化

1 使用 wandb进行可视化训练过程 本文章将从wandb的安装、wandb的使用、demo的演示进行讲解。 1.1 如何安装wandb&#xff1f; wandb的安装比较简单&#xff0c;在终端中执行如下的命令即可&#xff1a; pip install wandb在安装完成之后&#xff0c;我们需要&#xff0c;去…

猫头虎分享已解决Bug || Error: [Vue warn]: Unknown custom element: <my-component> ‍✨

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

[C++]17:二叉树进阶

二叉树进阶 一.二叉搜索树&#xff1a;1.二叉搜索树的概念&#xff1a;2.二叉搜索树的实现---循环版本&#xff1a;1.二叉搜索树的基本结构&#xff1a;2.查找&#xff1a;3.插入&#xff1a;4.中序遍历&#xff1a;5.删除&#xff1a; 3.二叉搜索树的实现---递归版本&#xff…

Python数据科学:Scikit-Learn机器学习

4.1Scikit-Learn机器学习 Scikit-Learn使用的数据表示&#xff1a;二维网格数据表 实例1&#xff1a;通过Seaborn导入数据 def skLearn():scikit Learn基本介绍:return:import seaborn as sns#导入Iris数据集#注&#xff1a;一般网络访问不了iris sns.load_dataset(iris)ir…

ubuntu服务器部署gitlab docker并配置nginx反向代理https访问

拉取镜像 docker pull gitlab/gitlab-ce运行容器 docker run --detach \--publish 9080:80 --publish 9022:22 --publish 9443:443\--namegitlab \--restartalways \--volume /home/docker/gitlab/config:/etc/gitlab \--volume /home/docker/gitlab/logs:/var/log/gitlab \-…

Linux_文件系统

假定外部存储设备为磁盘&#xff0c;文件如果没有被使用&#xff0c;那么它静静躺在磁盘上&#xff0c;如果它被使用&#xff0c;则文件将被加载进内存中。故此&#xff0c;可以将文件分为内存文件和磁盘文件。 内存文件 磁盘文件 软、硬链接 一.内存文件 1.1 c语言的文件接口 …

C/C++内存管理:new、delete功能及原理实现

目录 一、C/C内存分布 二、C中内存管理方式 2.1new/delete操作内置类型 2.2 new和delete操作自定义类型 三、operator new与operator delete函数 四、new和delete的实现原理 4.1内置类型 4.2自定义类型 五、定位new 一、C/C内存分布 int globalVar 1; static int sta…

概率分布-离散型概率分布

更多AI技术入门知识与工具使用请看下面链接&#xff1a; https://student-api.iyincaishijiao.com/t/iNSVmUE8/

C++【AVL树】

目录 1.AVL树&#xff08;高度平衡搜索二叉树&#xff09;定义 1.1平衡因子&#xff08;Balance Factor简写成bf&#xff09; 1.2avl树的定义 2.AVL树插入的基本操作 2.1逻辑抽象图 2.2插入流程 2.3左单旋 2.4右单旋 2.5右左双旋 2.6左右双旋 3.AVL树的检验技巧 3.1…

LeetCode、901. 股票价格跨度【中等,单调栈】

文章目录 前言LeetCode、901. 股票价格跨度【中等&#xff0c;单调栈】题目链接及分类思路思路1&#xff1a;暴力思路2&#xff1a;单调栈写法优化&#xff1a;单调栈简化写法(数组替代栈集合) 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、…