刚刚习得这一技巧,做的太好了,可以直接拿来当模板用。估计也不会有什么变式之类的麻烦的东西。直接贴代码,太短了,一看就记住了。
[cpp]
#include
using namespace std;
int a[505],b[505],f[505];
int main()
{
int T,i,n1,n2,j,k,max;
cin>>T;
for(i=1;i<=T;i++)
{
cin>>n1;
for(j=1;j<=n1;j++)
cin>>a[j];
cin>>n2;
for(j=1;j<=n2;j++)
cin>>b[j];
memset(f,0,sizeof(f));
for(j=1;j<=n1;j++)
{
max=0;
for(k=1;k<=n2;k++)
{
if(a[j]>b[k]&&max
if(a[j]==b[k])
f[k]=max+1;
}
}
max=0;
for(j=1;j<=n2;j++)
if(f[j]>max)
max=f[j];
cout<
cout<
return 0;
}
#include
using namespace std;
int a[505],b[505],f[505];
int main()
{
int T,i,n1,n2,j,k,max;
cin>>T;
for(i=1;i<=T;i++)
{
cin>>n1;
for(j=1;j<=n1;j++)
cin>>a[j];
cin>>n2;
for(j=1;j<=n2;j++)
cin>>b[j];
memset(f,0,sizeof(f));
for(j=1;j<=n1;j++)
{
max=0;
for(k=1;k<=n2;k++)
{
if(a[j]>b[k]&&max
if(a[j]==b[k])
f[k]=max+1;
}
}
max=0;
for(j=1;j<=n2;j++)
if(f[j]>max)
max=f[j];
cout<
cout<
return 0;
}