HDU1423 Greatest Common Increasing Subsequence 最长公共上升子序列模版题

注意一下控制格式即可,最长公共上升子序列模版题

AC代码

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<string.h>
using namespace std;

int a[520],b[520],dp[520];

int main()
{
    int tt,p,q;
    scanf("%d",&tt);
    while(tt--)
    {
        memset(dp,0,sizeof(dp));
        scanf("%d",&p);
        for(int i=0;i<p;i++)
            scanf("%d",&a[i]);
        scanf("%d",&q);
        for(int i=0;i<q;i++)
            scanf("%d",&b[i]);
        int maxx;
        for(int i=0;i<p;i++)
        {
            maxx=0;
            for(int j=0;j<q;j++)
            {
                if(a[i]>b[j])
                    maxx=max(dp[j],maxx);
                else if(a[i]==b[j])
                    dp[j]=maxx+1;
            }
        }
        int ans=0;
        for(int i=0;i<q;i++)
            ans=max(ans,dp[i]);
        if(tt)
            printf("%d\n\n",ans);
        else
            printf("%d\n",ans);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/OFSHK/p/11235714.html