当前位置: 首页 > news >正文

蓝桥杯-最长公共子序列(线性dp)

没有白走的路,每一步都算数🎈🎈🎈

题目描述:

已知有两个数组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]+1else:dp[i][j] = max(dp[i-1][j],dp[i][j-1])
print(dp[n][m])

每日一句

摘自《三体》:

生存在宇宙中,本身就是一件很幸运的事情,但是不知道什么时候起,你们有了这样一种幻想,认为生存是唾手可得的,这就是你们失败因的根本原。

http://www.lryc.cn/news/2394.html

相关文章:

  • GO的并发模式Context
  • 《Redis实战篇》六、秒杀优化
  • 《C++ Primer Plus》第16章:string类和标准模板库(11)
  • 声明和定义
  • Python获取最小路径,查找元素在list中的坐标
  • 数据采集协同架构,集成马扎克、西门子、海德汉、广数、凯恩帝、三菱、海德汉、兄弟、哈斯、宝元、新代、发那科、华中各类数控以及各类PLC数据采集软件
  • Allegro172版本如何用自带的功能实现快速在1MMBGA下方等距放置电容
  • 一种简单的统计pytorch模型参数量的方法
  • 【PyTorch】教程:对抗学习实例生成
  • 中国区使用Open AI账号试用Chat GPT指南
  • STM32开发(9)----CubeMX配置外部中断
  • Nextjs了解内容
  • 从事功能测试1年,裸辞1个月,找不到工作的“我”怎么办?
  • 机器学习基本原理总结
  • JVET-AC0315:用于色度帧内预测的跨分量Merge模式
  • Session与Cookie的区别(二)
  • 疫情开发,软件测试行情趋势是怎么样的?
  • Java中间件描述与使用,面试可以用
  • [OpenMMLab]AI实战营第七节课
  • 面向对象的设计模式
  • 里氏替换原则|SOLID as a rock
  • 【C++】右左法则,指针、函数与数组
  • 打通数据价值链,百分点数据科学基础平台实现数据到决策的价值转换 | 爱分析调研
  • C++之多态【详细总结】
  • ThingsBoard-RPC
  • java分治算法
  • 【Flutter】【Unity】使用 Flutter + Unity 构建(AR 体验工具包)
  • MC0108白给-MC0109新河妇荡杯
  • 求职(JAVA程序员的面试自我介绍)
  • 金三银四季节前端面试题复习来了