hdu 1423 最长递增公共子序列

来源:互联网 发布:网上美工兼职 编辑:程序博客网 时间:2024/06/06 05:40
#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;}
0 0