#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
#include<queue>
using namespace std;
#define maxn 1000
int a[maxn];
int b[maxn];
int f[maxn];
int n,m;
int LCIS()
{
int i,j,k;
memset(f,0,sizeof f);
for(int i=0;i<n;i++)
{
k=0;
for(j=0;j<m;j++)
{
if(a[i]==b[j])
{
if(f[j]<f[k]+1)
f[j]=f[k]+1;//更新
}
if(a[i]>b[j]){//0到j-1中,對於小於a[i]的,保存f值的最優解
if(f[j]>f[k])
k=j;
}
}
}
int ma=-1;
for(int i=0;i<m;i++)
ma=max(ma,f[i]);
return ma;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(f,0,sizeof f);
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(int i=0;i<m;i++)
scanf("%d",&b[i]);
printf("%d\n",LCIS());
if(t)
printf("\n");
}
return 0;
}
慢慢領悟。
HDU1423----Greatest Common Increasing Subsequence
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.