AcWing 897. 最长公共子序列

动态规划就是多见识应用题就完事儿了,也没有什么好说的。
讲解参考:
【E05 线性DP 最长公共子序列】
在这里插入图片描述
在这里插入图片描述

#include<iostream>
#include<algorithm>
#define N 1010
using namespace std;
char a[N],b[N];
int n,m;
int f[N][N];
int main(){cin >> n >> m >> a + 1 >> b + 1 ;for(int i = 1; i <= n ; ++ i) {for(int j = 1; j <= m ; ++ j){if(a[i] == b[j]){f[i][j] = f[i - 1][j - 1] + 1;}else{f[i][j] = max(f[i - 1][j],f[i][j - 1]);}}}cout << f[n][m];return 0;
}

输出最长公共子序列的代码,(STL版)
Runtime环境:c++17

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>  // 用于 reverse 函数using namespace std;pair<int, string> lcs(const string& s1, const string& s2) {int m = s1.size();int n = s2.size();// 初始化 dp 数组vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));// 填充 dp 数组for (int i = 1; i <= m; ++i) {for (int j = 1; j <= n; ++j) {if (s1[i - 1] == s2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}}}// 获取 LCS 的长度int lcs_length = dp[m][n];// 回溯找到 LCS 序列string lcs_seq;int i = m, j = n;while (i > 0 && j > 0) {if (s1[i - 1] == s2[j - 1]) {lcs_seq.push_back(s1[i - 1]);--i;--j;} else if (dp[i - 1][j] > dp[i][j - 1]) {--i;} else {--j;}}// 由于回溯是从最后开始的,所以需要反转字符串reverse(lcs_seq.begin(), lcs_seq.end());return {lcs_length, lcs_seq};
}int main() {string s1 = "ABCBDABQ";string s2 = "BDCABQ";// 调用 LCS 函数auto [length, sequence] = lcs(s1, s2);// 输出结果cout << "最长公共子序列长度: " << length << endl;cout << "最长公共子序列: " << sequence << endl;return 0;
}

c版

#include<iostream>
#include<algorithm>
#define N 11
using namespace std;
char a[N],b[N];
int n,m;
int f[N][N];
char seq[N];
int main(){cin >> n >> m >> a + 1 >> b + 1 ;for(int i = 1; i <= n ; ++ i) {for(int j = 1; j <= m ; ++ j){f[i][j]=max(f[i-1][j],f[i][j-1]);if(a[i]==b[j]) f[i][j]=max(f[i][j],f[i-1][j-1]+1);}}cout << f[n][m] << endl;//最长子序列输出int i = n , j = m;string str;while(i&&j){if(a[i] == b[j]){str += a[i];i--,j--;}else if(f[i - 1][j] > f[i][j - 1]){i--;}else{j--;}}//不逆置字符串,直接逆序输出就完事儿了for(int i=str.size()-1;i>=0;--i)cout << str[i];return 0;
}

PS,输出最长子序列的代码我尝试了10位的两个,好像是正确的,输出长度的啃腚没问题,输出最长子序列是啥的没咋仔细验证过,是GPT生成的代码

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

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

相关文章

负载均衡的分类有哪些?

负载均衡主要就是将服务器中的工作任务进行平衡、分摊到多个操作单元上进行运行&#xff0c;以此来协同完成工作任务&#xff0c;那负载均衡会有哪些分类呢&#xff01;接下来就让小编来带领大家一起来了解一下吧&#xff01; 负载均衡可分为软硬件负载均衡和本地、全局负载均衡…

Loki Unable to fetch labels from Loki (no org id)

应该是多租户相关导致的 参考文档: 参考文档cMulti-tenancy | Grafana Loki documentationDescribes how Loki implements multi-tenancy to isolate tenant data and queries.https://grafana.com/docs/loki/latest/operations/multi-tenancy/ https://github.com/grafana…

主流AI绘画工具-StableDiffusion本地部署方法(mac电脑版本)

Stable Diffusion是一款强大的AI生成图像模型&#xff0c;它可以基于文本描述生成高质量的图像。对于想要在本地运行此模型的用户来说&#xff0c;使用Mac电脑部署Stable Diffusion是一个非常吸引人的选择&#xff0c;特别是对于M1或M2芯片的用户。本文将详细介绍如何在Mac上本…

高效能低延迟:EasyCVR平台WebRTC支持H.265在远程监控中的优势

TSINGSEE青犀视频EasyCVR视频汇聚平台在WebRTC方面确实支持H.265编码&#xff0c;尽管标准的WebRTC API在大多数浏览器中默认并不支持H.265&#xff08;也称为HEVC&#xff0c;高效视频编码&#xff09;编码。EasyCVR平台通过一系列创新的技术手段&#xff0c;实现了在WebRTC协…

食家巷中秋美食,味蕾上的团圆盛宴

月到中秋分外明&#xff0c;在这个充满温情与思念的节日里&#xff0c;美食成为了人们传递情感、共享团圆的重要载体。而食家巷&#xff0c;以其独特的中秋美食&#xff0c;为这个佳节增添了一抹别样的风味。 走进食家巷&#xff0c;仿佛踏入了一个美食的宝藏之地。这里的传统…

excel规划求解结合vba宏笔记

目录 概念与配置 规划求解定义 excel设置规划求解 宏的基本操作 excel批量进行规划求解案例 加载规划求解模块 宏的设置 宏录制vba 其他案例 概念与配置 规划求解定义 运用“规划求解”定义并求解问题 - Microsoft 支持 excel设置规划求解 EXCEL规划求解的简明教程…

Java设计模式【解释器模式】-行为型

1. 介绍 1.1 什么是解释器模式&#xff1f; 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;它为某种语言定义其文法的一种表示&#xff0c;并定义一个解释器&#xff0c;使用该解释器来解释语言中的句子。通俗来说&#xff0c;解释…

突破代码:克服编程学习中的挫折感

目录 一、心态调整&#xff1a;心理韧性的培养 接受挫折是学习的一部分 设置实际的学习目标 保持学习的乐趣 二、学习方法&#xff1a;策略的实施 逐步解决问题 寻找多样的学习资源 定期复习与实践 三、成功经验&#xff1a;实例的启示 Debug的技巧掌握 算法的深入理…

云轴科技ZStack与鼎甲科技共创数据保护新篇章

在数字化转型的浪潮中&#xff0c;数据安全和业务连续性成为了企业关注的焦点。云轴科技ZStack与鼎甲科技基于鼎甲迪备新版全面支持 ZStack Cloud 云平台备份与恢复服务&#xff0c;为用户提供更安全、高效的数据保护解决方案。 ZStack Cloud云平台的本地备份数据功能&#xff…

开发中如何在运行/调试时将项目热部署到Tomcat

这里有一篇不错的博客&#xff0c;可以参考 http://t.csdnimg.cn/oWcgm 正常情况下&#xff0c;我们将web项目打包成war包后&#xff0c;需要放到tomcat的webapps路径下&#xff0c;然后启动tomcat&#xff0c;才能正常访问。但是这在开发阶段是极为不便的。因此可以使用两种方…

Qt_两种创建组件的方式-通过图形化-通过代码

文章目录 一、通过图形化的方式&#xff0c;在界面上创建一个控件&#xff0c;显示hello world1.打开UI设计界⾯2.拖拽控件⾄ ui 界⾯窗⼝并修改内容3.构建并运行 二、通过代码的方式&#xff0c;通过编写代码&#xff0c;在界面上创建控件&#xff0c;显示hello world在Widget…

AIGC提示词(2):塑造未来内容创作的核心力量

引言 &#x1f31f; 在这个数字化的时代&#xff0c;人工智能生成内容&#xff08;AIGC&#xff09;正变得越来越普遍。从自动写作到图像生成&#xff0c;AI正以前所未有的速度和多样性创造内容。然而&#xff0c;要实现高质量和相关性强的内容生成&#xff0c;关键在于有效地…

深入理解Spring Boot配置文件的高级用法

一、Spring Boot配置文件基础 1.1 常用配置文件格式 Spring Boot支持两种配置文件格式&#xff1a;properties 和 YAML。 1.1.1 Properties格式 application.properties 文件是最常见的配置文件格式。它以键值对的形式配置内容&#xff0c;格式简单直观。 server.port8080…

报错记录1:imx6ull适配ov2640摄像头报错unknown mbus:xxx

文章目录 报错内容报错代码报错原因 解决 报错内容 [ 376.346236] unknown mbus:0x1007 [ 376.350166] mx6s-csi 21c4000.csi: mbus (0x00001007) invalid.报错代码 在mx6s_capture.c文件中&#xff0c;找到此行报错的调用路径。 static int mx6s_vidioc_enum_fmt_vid_cap…

已成功入职小米大模型岗!!大模型面试其实挺水的,hr听到这些直接过

小米大模型面试180题 1、目前比较受欢迎的开源大模型有哪些&#xff1f; GPT系列&#xff1a;由OpenAl开发的生成式预训练模型&#xff0c;如 GPT-3。 BERT系列&#xff1a;由Google开发的转换式预训练模型&#xff0c;如BERT、RoBERTa等。 T5系列&#xff1a;由Google开发的基…

003、架构_详解(重点)

GoldenDB 分布式数据库框架 DN和RDB增加了备节点;引入新模块CM,且GTM、MDS、PM、CM都增加备节点;MDS、PM、CM、RDB被统一在了管理节点之中;GTM和MDS间多了一条连线,因为GTM的切换由MDS把控;初步系统架构mysqld:一般称为DB节点,负责单个节点的数据处理; dbproxy:一般…

CSS学习3

样式表 一、内部样式表二、行内样式表&#xff08;内联样式&#xff09;三、外部样式表&#xff08;外链样式&#xff09;总结 一、内部样式表 在html内部成为内部样式表&#xff0c;用style标签定义。 可以放在html任何地方&#xff0c;包括html标签外部。 <html><…

Gitee上传项目(从0开始)

1.默认你Git已经下载好的情况下。 下载好的两种显示&#xff1a; 1.右击桌面显示这个 2.如果没有情况1出现&#xff0c;需要自己去创建快捷方式 2.去网站创建仓库 网站参考&#xff1a;yanyongzhitest/java_web - 码云 - 开源中国 (gitee.com) 新建仓库&#xff1a; 仓库名…

day_59

47. 参加科学大会&#xff08;第六期模拟笔试&#xff09; import queueclass Edge:def __init__(self, t, w):self.t t self.w w def main():n, m map(int, input().split())grid [[] for _ in range(n 1)]for _ in range(m):s, t, w map(int, input().split())grid[s]…

Nginx负载均衡请求队列配置:优化流量管理

在高流量的Web应用场景中&#xff0c;合理地管理进入的请求流量对于保持服务的稳定性和响应性至关重要。Nginx提供了请求队列的配置选项&#xff0c;允许开发者控制进入后端服务器的请求数量。通过配置请求队列&#xff0c;可以在后端服务器达到最大处理能力时&#xff0c;优雅…