Greatest Common Increasing Subsequence(最长单调递增公共子序

Greatest Common Increasing SubsequenceTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5557Accepted Submission(s): 1816

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

Source

链接:?pid=1423

思路:求最长递增公共子序列模板题

#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int n,m,a[505],b[505];int LICS(){int ans=0;int dp[505]={0};for(int i=1;i<=n;i++){int len=0;for(int j=1;j<=m;j++){if(a[i]>b[j])len=max(len,dp[j]);else if(a[i]==b[j])dp[j]=max(dp[j],len+1);ans=max(ans,dp[j]);}}return ans;}int main(){int t,i;scanf("%d",&t);while(t–){scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&a[i]);}scanf("%d",&m);for(i=1;i<=m;i++){scanf("%d",&b[i]);}printf("%d\n",LICS());if(t) printf("\n");}return 0;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

,寂寞时,想想我的影子,我会在远方给你一个微笑;难过时,

Greatest Common Increasing Subsequence(最长单调递增公共子序

相关文章:

你感兴趣的文章:

标签云: