【模板】最长公共上升子序列
2013-05-21 18:54
295 查看
Description:
给定两个序列A,B,其长度分别为N,M,现在要你求出这两个序列中最长的一个公共子序列,并使这个子序列递增。比如数列{1,2,0,4,5}和{1,0,4,5,2},其最长公共上升子序列就是{1,4,5},长度为3。
Input:
第一行:一个N;第二行:N个数,为数列A;
第三行:一个M;
第四行:M个数,为数列B。
Output:
一个数,为最长公共上升子序列的长度。
Sample Input:
5 1 2 0 4 5 5 1 0 4 5 2
Sample Output:
3#include<iostream> #include<cstring> #include<cstdio> using namespace std; int a[210],b[210],f[210]; int main(){ int t,n,m; int i,j,k; scanf("%d",&t); while(t--){ scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); scanf("%d",&m); for(i=1;i<=m;i++) scanf("%d",&b[i]); for(i=1;i<=n;i++){ k=0; for(j=1;j<=m;j++){ if(a[i]==b[j]) if(f[j]<f[k]+1) f[j]=f[k]+1; if(a[i]>b[j]) if(f[k]<f[j]) k=j; } } int ans=0; for(i=1;i<=m;i++) if(f[i]>ans) ans=f[i]; printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU 1423 Greatest Common Increasing Subsequence (最长公共上升子序列)【模板】
- CodeForces 10D. LCIS 最长公共上升子序列模板题 + 打印路径
- HDU1423&ZOJ2432 - Greatest Common Increasing Subsequence(LCIS最长公共上升子序列模板)
- CodeForces 10D. LCIS 最长公共上升子序列模板题 + 打印路径
- 最长公共上升子序列(LICS) 模板
- 最长公共上升子序列
- HDU 1069 Monkey and Banana 最长上升子序列模板
- hdu 1423 Greatest Common Increasing Subsequence(最长公共上升子序列dp)
- HDU 1423 动态规划—最长公共上升子序列
- zoj2432 hdoj1423 最长公共上升子序列(LCIS)
- 初入算法篇(动态规划)最长上升子序列poj2533+栈优化模板&&scau18090 好多好多球
- hdu 1423 最长公共上升子序列
- POJ 2127 最长公共上升子序列
- [CODEVS2185]最长公共上升子序列(dp)
- LCS(最长公共子序列)、LIS(最长上升子序列)、LCIS(最长公共上升子序列)
- 动态规划——最长公共上升子序列LCIS
- 最长上升子序列(模板)
- CSU 1120 病毒(经典模板例题:最长公共递增子序列)
- 最长公共上升子序列
- 最长公共上升子序列 LCIS