#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
char str1[], str2[];
int f[][];//记录状态
//动态规划是一种记忆化搜索
/*有俩个字符串,求出他们的最长公共子序列
,例如:
acdtfs
aldtks
最长公共子序列是adts,长度为4
n,m
string1(length = n)
string2(length = m)
f[i][j]表示1串第i个与第二个串第j个匹配得到
的子序列最大长度
f[i][j] = max(f[i - 1][j], f[i][j - 1]);
f[i - 1][j - 1] + 1;
*/
int main(){
int i, j, k;
int n, m;
scanf("%d%d",&n,&m);
scanf("%s%s",str1 + , str2 + );
f[][] = ;
for(int i = ; i <= n; i++){
for(int j = ; j <= m; j++){
if(str1[i] == str2[j]){
f[i][j] = f[i - ][j - ] + ;
}
f[i][j]=max(f[i][j], f[i-][j]);
f[i][j]=max(f[i][j], f[i][j-]);
}
}
printf("%d\n", f[n][m]);
return ;
}
 #include <iostream>
using namespace std;
/*有一串数,求出它的最大不下降子序列的
长度(等于也包括)
如1, 2, 5, 3, 6, 2, 9, 10
答案是
1 2 3 6 9 10(这只是其中之一)
f[i]表示子序列包括数字i的时候,最长不下降子序列的长度
f[i] = max(f[j] + 1) a[i] > a[j];
ans = max(f[i])
*/
int a[];
int f[];
int memory[];//记录状态
int main(){
int i, j, k;
int n;
scanf("%d", &n);//数串的长度
for(i = ; i <= n; i++){
scanf("%d", &a[i]);
}
int temp;
f[] = ;//第一个为1
for(i = ; i <= n; i++){
f[i] = ;
for(j = ; j <= i - ; j++){
if(a[i] > a[j]){//如果后面的数字更大
if(f[i] < f[j] + ){//如果后面数字的最长子序列长度小于前面最长子序列长度 + 1
f[i] = f[j] + ;//更新此时的最长子序列长度
memory[i] = j;//记录i位置的前一个位置
}
}
}
}
int ans = , mark;//mark用来取得记录最大不下降子序列的下标,ans用来记录大子序列的值
for(i = ; i <= n; i++){
if(ans < f[i]){
mark = i;
ans = f[i];
}
}
temp = mark;
//倒序输出记录状态 (这里可以利用一个栈顺序输出)
while(temp > ){
printf("%d ", a[temp]);
temp = memory[temp];
}
printf("\n%d\n", ans);
return ;
}

最长公共子序列的优秀博文:https://blog.csdn.net/someone_and_anyone/article/details/81044153

最长共公子序列(LCS)的更多相关文章

  1. [vijosP1303]导弹拦截(最长上升子序列转LCS)

    描述 某国为了防御敌国的导弹袭击,研发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭 ...

  2. 动态规划法(十)最长公共子序列(LCS)问题

    问题介绍   给定一个序列\(X=<x_1,x_2,....,x_m>\),另一个序列\(Z=<z_1,z_2,....,z_k>\)满足如下条件时称为X的子序列:存在一个严格 ...

  3. python 回溯法 子集树模板 系列 —— 14、最长公共子序列(LCS)

    问题 输入 第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000) 输出 输出最长的子序列,如果有多个,随意输出1个. 输入示例 belong cnblogs 输出示例 blog ...

  4. [CTSC2017]最长上升自序列(伪题解)(Dilworth's theorem+网络流)

    部分分做法很多,但每想出来一个也就多5-10分.正解还不会,下面是各种部分分做法: Subtask 1:k=1 LCS长度最长为1,也就是说不存在j>i和a[j]>a[i]同时成立.显然就 ...

  5. Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)

    一.Description A palindrome is a symmetrical string, that is, a string read identically from left to ...

  6. 算法复习——求最长不下降序列长度(dp算法)

    题目: 题目背景 161114-练习-DAY1-AHSDFZ T2 题目描述 有 N 辆列车,标记为 1,2,3,…,N.它们按照一定的次序进站,站台共有 K 个轨道,轨道遵从先进先出的原则.列车进入 ...

  7. 【Luogu P1439】最长公共子序列(LCS)

    Luogu P1439 令f[i][j]表示a的前i个元素与b的前j个元素的最长公共子序列 可以得到状态转移方程: if (a[i]==b[j]) dp[i][j]=dp[i-1][j-1]+1; d ...

  8. 程序员的算法课(6)-最长公共子序列(LCS)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ...

  9. 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)

    最长公共子序列(LCS) [问题] 求两字符序列的最长公共字符子序列 问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字 ...

随机推荐

  1. pragma警告处理

    使用pragma消除警告 (绝不可强行消除,因为有可能是个运行时错误) #pragma clang diagnostic push #pragma clang diagnostic ignored & ...

  2. SWIG 扩展Opencv python调用C++

    osx:10.12 g++ 7.1 swig 3.0.12 opencv 3.2.0 SWIG是Simplified Wrapper and Interface Generator的缩写.是Pytho ...

  3. 「ZJOI Day2」游记

    Day-1 晚上一直在出自己做的模拟赛的T1,真的快要死掉了. 分类讨论几十种情况. 窝还是找了Bluesky大佬一起来验题,她瞬间就A掉了这一道题目...自闭了.. 诶,我还是太弱了. 之前教练组织 ...

  4. CF1157B-Long Number题解

    原题地址 题目大意:有一个\(n\)位数,其中的数字只有\(1\)~\(9\),不包括\(0\),每个\(1\)~\(9\)的数字有一个映射,映射也在\(1\)~\(9\)中,现在我们可以对这个\(n ...

  5. Nginx-反向代理实现

    Nginx 反向代理操作案例 Nginx反向代理的组件模块 upstream模块介绍->点我< http_proxy_module模块介绍->点我< 环境准备 1)四台服务器都 ...

  6. P1996 约瑟夫问题-题解(队列??明明是单循环链好吗)

    一如既往的题目传送:     https://www.luogu.org/problemnew/show/P1996 这里不讲数组模拟的方法(毕竟多做点题的模拟功力足以暴力出这道题),而是讲一种单循环 ...

  7. Linux命令_sed

    1.替换(将"xxx"替换成"yyy") 现有文件pets.txt 要将其中的"my"替换为"your",可以这样替换, ...

  8. postgreSql 基本操作总结

    0. 启动pgsl数据库 pg_ctl -D /xx/pgdata start     1. 命令行登录数据库 1 psql -U username -d dbname -h hostip -p po ...

  9. 2018-2019-2 《Java程序设计》第8周学习总结

    20175319 2018-2019-2 <Java程序设计>第8周学习总结 教材学习内容总结 本周学习<Java程序设计>第十五章: 泛型: 泛型(Generics)的主要目 ...

  10. 开放源代码的设计层面框架Spring——day04

    spring第四天     一.Spirng中的JdbcTemplate         1.1JbdcTemplate概述             他是spring框架中提供的一个对象,是对原始Jd ...