HDU 1423

来源:互联网 发布:淘宝无理由退货规则 编辑:程序博客网 时间:2024/06/07 05:19
Greatest Common Increasing Subsequence

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5384    Accepted Submission(s): 1742

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 <stdio.h>#include <string.h>const int MAXN=510;int a[MAXN],b[MAXN];int f[MAXN];int main(){    int t;    scanf("%d",&t);    while(t--)    {        int n;        scanf("%d",&n);        memset(f,0,sizeof(f));        for(int i=1;i<=n;i++)            scanf("%d",&a[i]);        int m;        scanf("%d",&m);        for(int i=1;i<=m;i++)            scanf("%d",&b[i]);        for(int i=1;i<=n;i++)        {            int MAX=0;            for(int k=1;k<=m;k++)            {                if(a[i]>b[k]&&MAX<f[k])                    MAX=f[k];                if(a[i]==b[k])                    f[k]=MAX+1;            }        }        int temp=0;        for(int i=1;i<=m;i++)        {            if(temp<f[i])                temp=f[i];        }        printf("%d\n",temp);        if(t)printf("\n");    }    return 0;}


0 0
原创粉丝点击