本文主要是介绍杭电1423(Greatest Common Increasing Subsequence),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
点击打开杭电1423
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
15 1 4 2 5 -12 4 -12 1 2 4
Sample Output
2
代码实现:
import java.util.Scanner;class P1423 {static int[] a,b,dp;static int n,m;public static void main(String[] args) {Scanner sc=new Scanner(System.in);int t=sc.nextInt();while(t-->0){n=sc.nextInt();a=new int[n+1];for(int i=1;i<=n;i++){a[i]=sc.nextInt();}m=sc.nextInt();b=new int[m+1];for(int i=1;i<=m;i++){b[i]=sc.nextInt();}System.out.println(LICS());if(t!=0){System.out.println();}}}public static int LICS() {int i,j,Max;int lengMax=Math.max(n, m);dp=new int[lengMax+1];for(i=1;i<=n;i++){Max=0;for(j=1;j<=m;j++){if(a[i]>b[j] && Max<dp[j]){Max=dp[j];}if(a[i]==b[j]){dp[j]=Max+1;}}}Max=0;for(i=1;i<=m;i++){if(Max<dp[i]){Max=dp[i];}}return Max;}
}
这篇关于杭电1423(Greatest Common Increasing Subsequence)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!