AcWing 272. 最长公共上升子序列
Posted qingyuyyyyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 272. 最长公共上升子序列相关的知识,希望对你有一定的参考价值。
#include<iostream> using namespace std ; const int N=3030; int n; int a[N]; int b[N]; int f[N][N]; //f[i][j] //表示所有由第一个序列的前i个字母,和第二个序列的前j个字母构成的, //且以b[j]结尾的公共上升子序列 int main() { scanf("%d",&n); for(int i=1; i<=n; i++) scanf("%d",&a[i]); for(int i=1; i<=n; i++) scanf("%d",&b[i]); for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) { //不包含a[i]的公共上升子序列 f[i][j]=f[i-1][j]; //包含的 if(a[i]==b[j]) { f[i][j]=max(f[i][j],1); for(int k=1; k<j; k++) if(b[k]<b[j]) f[i][j]=max(f[i][j],f[i][k]+1); } } int res=0; for(int i=1; i<=n; i++) res=max(res,f[n][i]); printf("%d ",res); return 0; }
以上是关于AcWing 272. 最长公共上升子序列的主要内容,如果未能解决你的问题,请参考以下文章