蓝桥杯-最长公共子序列(线性dp)
2023-03-07 09:10:02 时间
没有白走的路,每一步都算数???
题目描述:
已知有两个数组a,b。已知每个数组的长度。要求求出两个数组的最长公共子序列
序列 1 2 3 4 5 序列 2 3 2 1 4 5
子序列:从其中抽掉某个或多个元素而产生的新序列。其中子序列可以和本身一样
这里1 2 3 4 5的子序列挺多,总共有这么多个
同理 2 3 2 1 4 5的子序列也有很多,但是应该比下面的要少,因为出现重复的元素
公共子序列:即两个序列中共有的部分
长度为1的:1 2 3 4 5
部分长度为2的: 23
部分长度为3的: 234
长度为4的:2345
最长公共子序列:最长的公共子序列
2 3 4 5
输入描述:
第一行:
输入N,M表示两个数组的长度
第二行:
数组a中的元素
第三行:
数组b中的元素
输出描述:
输出两个数组的最长公共子序列的长度
样例输入输出:
样例输入:
5 6
1 2 3 4 5
2 3 2 1 4 5
样例输出:
4
算法分析:
import os
import sys
n,m = map(int,input().split())
a = [0]+[int(i) for i in input().split()]
b = [0]+[int(i) for i in input().split()]
dp = [[0]*(m+1) for i in range(n+1)]
for i in range(1,n+1):
for j in range(1,m+1):
if a[i] == b[j]:
dp[i][j] = dp[i-1][j-1]+1
else:
dp[i][j] = max(dp[i-1][j],dp[i][j-1])
print(dp[n][m])
每日一句
摘自《三体》:
生存在宇宙中,本身就是一件很幸运的事情,但是不知道什么时候起,你们有了这样一种幻想,认为生存是唾手可得的,这就是你们失败因的根本原。
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的