#include<stdio.h> #include<string.h> #include<iostream> using namespace std; int max(int a,int b) { return a>b?a:b; } int main() { int T,i,j,n,m,num1[510],num2[510]; int dp[510][510]; scanf("%d",&T); while(T--) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&num1[i]); scanf("%d",&m); for(i=1;i<=m;i++) scanf("%d",&num2[i]); int Max; for(i=1;i<=n;i++) { Max=0; for(j=1;j<=m;j++) { if(num2[j]<num1[i]&&Max<dp[i-1][j]) { Max=dp[i-1][j]; } dp[i][j]=dp[i-1][j]; if(num1[i]==num2[j]) { dp[i][j]=Max+1; } } } Max=0; for(i=1;i<=m;i++) if(dp[n][i]>Max) Max=dp[n][i]; printf("%d\n",Max); if(T)printf("\n"); } return 0; }
时间: 2024-10-29 19:10:22