Common SubsequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 55840 Accepted Submission(s): 25811 Problem Description A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = <x1, x2, ..., xm> another sequence Z = <z1, z2, ..., zk> is a subsequence of X if there exists a strictly increasing sequence <i1, i2, ..., ik> of indices of X such that for all j = 1,2,...,k, xij = zj. For example, Z = <a, b, f, c> is a subsequence of X = <a, b, c, f, b, c> with index sequence <1, 2, 4, 6>. Given two sequences X and Y the problem is to find the length of the maximum-length common subsequence of X and Y.
Sample Input abcfbc abfcab programming contest abcd mnp
Sample Output 4 2 0
|
LCS模板题,dp实现
import java.util.Arrays;
import java.util.Scanner;
public class main1159 {
static final int max=1005;
public static int LCS(String a,String b){
int dp[][]=new int[1005][1005];
for(int i=0;i<max;i++)
Arrays.fill(dp[i], 0);
for(int i=1;i<=a.length();i++)
for(int j=1;j<=b.length();j++){
if(a.charAt(i-1)==b.charAt(j-1)){
dp[i][j]=dp[i-1][j-1]+1;
}
else{
dp[i][j]=Math.max(dp[i-1][j], dp[i][j-1]);
}
}
return dp[a.length()][b.length()];
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
while(scan.hasNext()){
String a=scan.next();
String b=scan.next();
int cnt=LCS(a,b);
System.out.println(cnt);
}
}
}