HDU 1423 Greatest Common Increasing Subsequence

Greatest Common Increasing Subsequence


Problem Description
This is a problem from ZOJ 2432.To make it easyer,you just need output the length of the subsequence.
 
Input
Each sequence is described with M - its length (1 <= M <= 500) and M integer numbers Ai (-2^31 <= Ai < 2^31) - the sequence itself.

Output
output print L - the length of the greatest common increasing subsequence of both sequences.
 
Sample Input
 
   
1 5 1 4 2 5 -12 4 -12 1 2 4

Sample Output
 
   
2


题意:求最大公共上升子序列。

基本模板,就时最大公共子序列加了个判断大小的条件,主要看怎么加进去。

#include
#include
#include
using namespace std;
const int MAXN=550;
int dp[MAXN][MAXN];
int a[MAXN];
int b[MAXN];
int n1,n2;
int main()
{
    int Case,i,j;
    scanf("%d",&Case);
    while(Case--)
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        scanf("%d",&n1);
        for(i=1; i<=n1; i++)scanf("%d",&a[i]);
        scanf("%d",&n2);
        for(i=1; i<=n2; i++)scanf("%d",&b[i]);
        memset(dp,0,sizeof(dp));
        for(i=1; i<=n1; i++)
        {
            int ans=0;
            for(j=1; j<=n2; j++)
            {
                if(b[j]


你可能感兴趣的:(DP,(DP)LCS与LIS)