Acwing - 最长公共子序列
状态表示挺少见的:f[i][j] 表示 a[1 - i] 与 b[1 - j] 的公共子序列的最大长度。
状态转移:化整为零,四种情况。
(1)a[i] 与 b[j] 都不选 就是 f[i - 1][j - 1]
(2)a[i] 与 b[j] 选其中一个 就是f[i - 1][j] 和 f[i][j - 1]
(3)a[i] 与 b[j] 都选 f[i - 1][j - 1] + 1
状态转移方程:四种情况取最大即可
枚举顺序:随便
答案:f[n][m]
897. 最长公共子序列
- 题目
- 提交记录
- 讨论
- 题解
- 视频讲解
给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。
输入格式
第一行包含两个整数N和M。
第二行包含一个长度为N的字符串,表示字符串A。
第三行包含一个长度为M的字符串,表示字符串B。
字符串均由小写字母构成。
输出格式
输出一个整数,表示最大长度。
数据范围
1≤N,M≤10001≤N,M≤1000
输入样例:
4 5
acbd
abedc
输出样例:
3
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
typedef long long ll;
const int N = 1e3 + 15;
int n,m,f[N][N];
string a,b;
int main()
{cin >> n >> m >> a >> b;a = "0" + a;b = "0" + b;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;return 0;
}
Acwing - 最长公共子序列相关推荐
- AcWing 897. 最长公共子序列(LCS朴素版)
题目连接 https://www.acwing.com/problem/content/899/ 思路 我们定义f[i][j]f[i][j]f[i][j]表示的是a串中长度为i和b串长度为j的最长公共 ...
- 最长公共子序列LCS[C++题解]
文章目录 状态表示 状态转移 题目大意: 两个字符串a和b,需要统计出其中公共子序列的最长是多少. 注意:所谓子序列,指的是出现的先后顺序一样,但可以不连续出现.比如对于s=abdef,其中adf是s ...
- 最长公共子序列(详细代码 注释 分析 以及求出最长公共子序列内容方法)
最长公共子序列 文章有些长,希望能够耐心看完,并且对你有帮助,文章是自己看了书之后,总结的,如果有什么错误的地方,欢迎指出. 一些基本的概念: 子序列: 原序列中删除若干个元素得到的序列,即原序列中可 ...
- 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1",序列Y=& ...
- 【动态规划】最长公共子序列与最长公共子串
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
- POJ 3080 多个串最长公共子序列
求多个串最长公共子序列,字典序最小输出.枚举剪枝+kmp.比较简单,我用find直接查找16ms #include<iostream> #include<string> #in ...
- java实现最长连续子序列_最长公共子序列 ||
问题:在 前一篇文章 最长公共子序列 | 的基础上要求将所有的最长公共子序列打印出来,因为最长公共子序列可能不只一种. 难点:输出一个最长公共子序列并不难,难点在于输出所有的最长公共子序列,我们需要在 ...
- 动态规划—最长公共子序列问题 HDU-1159 Common Subsequence
动态规划-最长公共子序列问题 Common Subsequence [ HDU - 1159 ] A subsequence of a given sequence is the given sequ ...
- 触类旁通,经典面试题最长公共子序列应该这么答
作者 | labuladong 来源 | labuladong(ID:labuladong) [导读]最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经 ...
- 模板 - 最长上升子序列与最长公共子序列
整理的算法模板合集: ACM模板 目录 1.最长上升子序列(LIS) 1.1树状数组优化O(nlogn)O(nlogn)O(nlogn) 2.最长公共子序列(LCS) 2.1转换成LIS优化O(nlo ...
最新文章
- linux快捷键 赋值,2_Shell语言———bash的快捷键、变量声明、引用变量及变量替换...
- 关于“#ifdef __cplusplus” 和 extern C 的问题
- javascript设计模式--命令模式
- 前端学习(2844):ui另一种按需加载
- java xy,java – 某个z深度的xy位置
- QML笔记-QML基本数据类型的使用
- Java 使用阿里云短信的API接口
- Python3.0的新改动
- js Indexof的用法
- 移动Web开发之流式布局笔记
- 最新html word 分页符,分页符 有什么用
- 面对SSD的步步紧逼,HDD依然奋斗不息
- 【Unity3D日常开发】新建2D、3D场景,新建场景没有灯光等问题
- 009.查找手机电话簿【散列表】
- java获取网页编码_java根据URL获取网页编码
- Spring项目使用H2内存数据库做单元测试
- LED及LCD冲突问题解决及LCD的驱动改进(蓝桥杯嵌入式stm32G431RBT6)
- 如何提高外贸询单转化率
- kernel panic-not syncing:IO-APIC+timer doesn't work!
- 央视春晚歌手王琪,和戏歌双绝吴广全在长春芝华仕会盟
热门文章
- ubuntu 无法识别Usb
- 什么是MySQL视图
- C/C++变量在内存中的位置及初始化问题
- 拓端tecdat|R语言使用二元回归将序数数据建模为多元GLM
- 用文本方式将数据装入一个数据库表 mysql_文本应该放哪_MySQL用文本方式将数据装入数据库表中...
- win10安装nvidia驱动
- 【NumPy基础】100道numpy练习——进阶篇
- python实现完整的求解给定列表中所有的平衡点问题,是所有的平衡点
- python 包的使用 (二)——tesseract识别图片中的文字
- python数组拼接concat_【JavaScript】重写数组的concat()方法