首先介绍一下什么是最长上升子序列

举一个例子  2 1 5 3 6 4 8 9  最长上身子序列是  1 3 4 8 9(不连续)

#include <iostream>
#include <algorithm>
using namespace std;
int a[1001],ans[1001],len;
int main()
{int n,T;cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];ans[1]=a[1];len=1;for(int i=2;i<=n;i++){if(a[i]>ans[len])ans[++len]=a[i];else{int pos=lower_bound(ans,ans+len,a[i])-ans;ans[pos]=a[i];}}cout<<len<<endl;}return 0;
}

LCS  最长公共子序列

 例如:

对序列 1,3,5,4,2,6,8,7和序列 1,4,8,6,7,5 来说
序列1,8,7是它们的一个公共子序列。
请注意: 空序列是任何两个序列的公共子序列。

例如: 序列1,2,3和序列4,5,6的公共子序列只有空序列。

<1>动态规划

eg:

abcfbc abfcab
programming contest
abcd mnp

Output

4
2
0

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
ll dp[1001][1001];
char str1[1111],str2[1111];
int main()
{while(~scanf("%s%s",str1+1,str2+1)){str1[0]='.';str2[0]='.';ll len1=strlen(str1);ll len2=strlen(str2);memset(dp,0,sizeof(dp));for(ll i=1; i<len1; i++){for(ll j=1; j<len2; j++){if(str1[i]==str2[j])dp[i][j]=dp[i-1][j-1]+1;elsedp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}printf("%lld\n",dp[len1-1][len2-1]);}return 0;
}

最长上升子序列(LIS)和最长公共子序列(LCS) 模板相关推荐

  1. 动态规划---最长公共子序列

    1.问题描述 一个给定序列的子序列是在该序列中删去若干元素后得到的序列.确切的说,若给定序列X={x1,x2,-,xm},则另一序列Z={z1,z2,-,zk},X的子序列是指存在一个严格递增下标序列 ...

  2. 动态规划算法解最长公共子序列LCS问题

    动态规划算法解LCS问题 作者 July 二零一零年十二月三十一日 本文参考:微软面试100题系列V0.1版第19.56题.算法导论.维基百科. 第一部分.什么是动态规划算法 ok,咱们先来了解下什么 ...

  3. 最长公共子序列问题LCS

    最长公共子序列问题LCS 问题描写叙述: 一个给定序列的子序列是在该序列中删去若干元素后得到的序列.确切地说.若给定序列X= { x1, x2,-, xm},则还有一序列Z= {z1, z2,-, z ...

  4. 程序员编程艺术第十一章:最长公共子序列(LCS)问题

    程序员编程艺术第十一章:最长公共子序列(LCS)问题 0.前言 程序员编程艺术系列重新开始创作了(前十章,请参考程序员编程艺术第一~十章集锦与总结).回顾之前的前十章,有些代码是值得商榷的,因当时的代 ...

  5. 最长公共子序列(LCS)算法

    一.最长公共字串与最长公共子序列 最长公共子串(Longest Common Substirng) 子串是串的一个连续的部分,子串中字符的位置必须连续. 例如:有两个字符串ABCBDAB 和 BDCA ...

  6. 动态规划算法——最长公共子序列求法

    给定序列X={ X1,X2,....Xn }.Y={ Y1,Y2,...Ym }找出它们的最大子序列Z={ Z1,Z2,...Zk }比如:X={ A,B ,C,B,D,A,B }.Y={ B,D,C ...

  7. java lcs_Java算法之最长公共子序列问题(LCS)实例分析

    本文实例讲述了Java算法之最长公共子序列问题(LCS).分享给大家供大家参考,具体如下: 问题描述:一个给定序列的子序列是在该序列中删去若干元素后得到的序列.确切地说,若给定序列X= { x1, x ...

  8. 动态规划篇——最长公共子序列(c++)

    引言:最长公共子序列属于动态规划的基础篇,由字符串的最长公共最序列可以引出很多的问题. 最长子序列详细讲解以及练习题目 需要详细讲解教程的可以观看上面链接的文章,以下是自己做的简单的概括. 一.何为最 ...

  9. python实现最长公共子序列(LCS)

    1.找到公共子序列的长度 若a为空或b为空,最长公共子序列为0 若a[m-1] == b[n-1](a的最后一个元素 == b的最后一个元素),那么a[:m]和b[:n]的公共子序列就是a[:m-1] ...

  10. 最长公共子序列(LCS)问题算法详解+例题(转换成LIS,优化为O(nlogn),看不懂你来打我)

    目录 最长公共子序列(LCS)问题 1.朴素做法 O(n2)O(n^2)O(n2) 2.转换成LIS优化O(nlogn)O(nlogn)O(nlogn) 3.P2758 编辑距离 最长公共子序列(LC ...

最新文章

  1. Apache配置代理服务器的方法(1)
  2. 学会这几个公式技巧,瞬间你就是高手
  3. MVC 自定义IModelBinder实现json参数转Dictionarystring, string
  4. mysql 官方镜像_运行官方mysql 镜像
  5. boost Mutex
  6. flex states的用法
  7. ubuntu修改文件夹权限
  8. 【数据库】第二章 基础函数、聚合函数、条件查询、子查询和多表查询
  9. Bootstrap 表单
  10. java随机数生成字母,手撕面试官
  11. vue-video-player 一款vue的前端视频播放插件 支持m3u8
  12. 最新消息!OKR周报新模板!
  13. 深度置信网络python3实现
  14. 给Java程序猿们推荐一些值得一看的好书
  15. 高频面试题—聊一下Euraka的注册原理
  16. win7升级RDP至8.1
  17. 【模型 6.0】以前的你遇事不知所措,现在的你可以镇定自若,靠它!
  18. 简单python爬虫爬取游戏wiki立绘
  19. Android11 禁止第三方APP安装,通过白名单管理
  20. 盘丝洞服务器维护,斗战神史上最大规模合服:涉及60个服务器

热门文章

  1. git 拉取某个分支到本地
  2. Java常用排序算法
  3. Jenkins在Windows下的安装与配置
  4. 迁移Gitolite仓库到GitLab(一)
  5. CAS3.5.x(x1)支持OAuth2 server
  6. 转换成CSV文件、Word、Excel、PDF等的方法--读取CSV文件的方法
  7. zencart 批量修改价格
  8. Objective-C中的位运算符用法
  9. win10 修改进入 cmd 命令行的默认路径
  10. 【EOS】1.环境搭建