蓝桥杯-最长公共子序列(线性dp)
创始人
2024-05-25 09:17:34
0

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

题目描述:

已知有两个数组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])

每日一句

摘自《三体》:

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

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...