hdu1423---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
151 4 2 5 -124-12 1 2 4

Sample Output
2代码实现：
#include

#include

using namespace std;int a[501],b[501];int dp[501][501];int main(){

int t,len1,len2,max;
cin>>t;
while(t--)
{
memset(dp,0,sizeof(dp));
cin>>len1;
for(int i=1; i<=len1; i++)
{
cin>>a[i];
}
cin>>len2;
for(int j=1; j<=len2; j++)
{
cin>>b[j];
}
for(int i=1; i<=len1; i++)
{
max=0;
for(int j=1; j<=len2; j++)
{
dp[i][j]=dp[i-1][j];
if(a[i]>b[j]&&max
{
max=dp[i-1][j];
}
if(a[i]==b[j])
{
dp[i][j]=max+1;
}
}
}
max=0;
for(int j=1; j<=len2; j++)
{
if(max
{
max=dp[len1][j];
}
}
cout< <
if(t)
{
cout<
}
}
return 0;}

#### 最新留言

[***.249.68.14]2022年05月23日 04时20分59秒

## 关于作者

喝酒易醉，品茶养心，人生如梦，品茶悟道，何以解忧？唯有杜康！
-- 愿君每日到此一游！