您的位置:首页 > 理论基础

题目1042:Coincidence(2008年上海交通大学计算机研究生机试真题)

2014-06-23 20:28 387 查看
题目1042:Coincidence

时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:1399

解决:748

题目描述:

Find a longest common subsequence of two strings.

输入:

First and second line of each input case contain two strings of lowercase character a…z. There are no spaces before, inside or after the strings. Lengths of strings do not exceed 100.

输出:

For each case, output k – the length of a longest common subsequence in one line.

样例输入:
abcd
cxbydz


样例输出:
2


import java.util.Scanner;

public class Main{

static int dp[][] = new int [101][101];
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

while( scanner.hasNext() ){
String s1 = scanner.next();
String s2 = scanner.next();
int l1 = s1.length();
int l2 = s2.length();

char charOfs1[] = s1.toCharArray();
char charOfs2[] = s2.toCharArray();

for (int i = 0; i <= l1; i++) {
dp[i][0] = 0;
}

for (int i = 0; i <= l2; i++) {
dp[0][i] = 0;
}

for (int i = 1; i <= l1; i++) {
for (int j = 1; j <= l2; j++) {
if(charOfs1[i-1] != charOfs2[j-1]){
dp[i][j] = max(dp[i][j-1],dp[i-1][j]);

}
else{
dp[i][j] = dp[i-1][j-1] +1;
}

}
}
System.out.println(dp[l1][l2]);
}
}
private static int max(int a, int b) {
return a>b?a:b;
}

}

/**************************************************************
Problem: 1042
User: yihukurama
Language: Java
Result: Accepted
Time:80 ms
Memory:15456 kb
****************************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐