此题其实不想写,写了留个记录吧
直接暴力解了,惭愧
代码:
#include<stdio.h>
#include<string.h>
int main()
{
int T,i,j,x,y,max;
int a[501],b[501],list[501];
int mark1,mark2;
int n,m;
scanf("%d",&T);
while(T--)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(list,0,sizeof(list));
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(j=0;j<m;j++)
scanf("%d",&b[j]);
max=0;
for(i=0;i<n;i++)
{
for(x=0;x<m;x++)
{
if(b[x]==a[i])
{
mark1=x;
list[i]=1;
for(j=0;j<i;j++)
{
if(a[j]<a[i])
{
for(y=0;y<x;y++)
{
if(a[j]==b[y] && list[i]<list[j]+1)
{
list[i]=list[j]+1;
}
}
}//if
}//j
}//if
}//x
if(max<list[i]) max=list[i];
}//i
printf("%d\n",max);
if(T>0) printf("\n");
}
return 0;
}