hdu 1423 Greatest Common Increasing Subsequence(LIS)

来源:互联网 发布:4g网络优化初级工程师 编辑:程序博客网 时间:2024/05/18 01:49

Greatest Common Increasing Subsequence

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


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

 

151 4 2 5 -124-12 1 2 4
 


 

Sample Output

 

2

 

最长递增公共子序列,注意格式

#include"stdio.h"#include"string.h"#define N 505int Max(int a,int b){return a>b?a:b;}int main(){int i,j,n,m,T;int a[N],b[N];int dp[N];scanf("%d",&T);while(T--){scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);scanf("%d",&m);for(i=0;i<m;i++)scanf("%d",&b[i]);memset(dp,0,sizeof(dp));for(i=0;i<n;i++){int max=0;   //记录数组a[i]前i个,b[j]前j个的最长递增公共子序列长度for(j=0;j<m;j++)      {if(a[i]>b[j])     //记录可用的最大dp[[j]max=Max(max,dp[j]);else if(a[i]==b[j])    //更新dp[j]的值dp[j]=Max(max+1,dp[j]);}}int max=0;for(i=0;i<m;i++)max=Max(max,dp[i]);printf("%d\n",max);if(T)            printf("\n");}return 0;}


 

0 0
原创粉丝点击