Pku acm 1458 Common Subsequence
来源:互联网 发布:卖淘宝小号的 编辑:程序博客网 时间:2024/06/04 19:06
Pku acm 1458 Common Subsequence
http://acm.pku.edu.cn/JudgeOnline/problem?id=1958 求两个string的最大公共字串,动态规划的经典问题。算法导论有详细的讲解。 下面以题目中的例子来说明算法:两个string分别为:abcfbc和abfca。创建一个二维数组result[][],维数分别是两个字符串长度加一。我们定义result[i][j]表示Xi和Yj 的最长子串(LCS).当i或j等于0时,result[i][j]=0. LCS问题存在一下递归式: result[i][j] = 0 i=0 or j=0 result[i][j] = result[i-1][j-1] Xi= =Yj result[i][j] = MAX(result[i-1][j], result[i][j-1]) Xi! =Yj 对于以上例子,算法如下: Result[i][j]: a b c f b a 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 a 1 0 1 1 1 b 2 0 2 2 f 3 0 1 2 2 3 c 4 0 1 2 3 3 3 3 a 5 0 1 2 3 3 3 4
从最后一个格向上顺着箭头的方向可以找到最长子串的构成,在有箭头组成的线段中,含有斜向上的箭头对应的字符是其中的一个lcs。
Java代码的核心部分如下:
for(int i=0;i<length1;i++){
result[i][0] = 0;
}
for(int i=0;i<length2;i++){
result[0][i] = 0;
}
for(int i=1;i<=length1;i++){
for(int j=1;j<=length2;j++){
if(str1.charAt(i-1)==str2.charAt(j-1))
result[i][j] = result[i-1][j-1]+1;
else
result[i][j] = result[i-1][j]>result[i][j-1]?result[i-1][j]:result[i][j-1];
}
}
System.out.println(result[length1][length2]);
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
- Pku acm 1458 Common Subsequence
- Pku acm 1458 Common Subsequence 题意分析
- pku 1458 Common Subsequence
- Common Subsequence 1458 pku
- Common Subsequence 1458 pku
- Pku acm 1458 Common Subsequence 动态规划解析
- Common Subsequence(PKU 1458)
- Pku acm 1458 Common Subsequence 动态规划题目解题报告(五)
- Pku acm 1458 Common Subsequence 动态规划解析 2d1d问题
- PKU 1458 HDOJ 1159 Common Subsequence
- 北大ACM 1458Common Subsequence
- ACM POJ 1458 Common Subsequence
- [ACM]Common Subsequence
- [ACM]Common Subsequence
- PKU-1458 Common Subsequence (最长公共子序列LCS)
- HDOJ 1159 Common Subsequence 杭电 ACM
- 杭电 HDU ACM 1159 Common Subsequence
- Common Subsequence--poj--1458
- Pku acm 1163 the Triangle
- 一个集合的算法问题的解决
- Pku acm 1579 Function Run Fun
- Pku acm 2081 Recaman's Sequence
- 为什么C程序中定义结构时经常要用到typedef呢?
- Pku acm 1458 Common Subsequence
- Pku acm 2250 Compromise
- SQL 和Oracle对数据库事务处理的差异性
- Pku acm 1159 Palindrome
- 给定一个文件夹,计算出文件中一共有多少个文件
- 用命令行的方式把文件夹中的文件以目录树的方式显示出来
- 时间不够用
- 给定一个Java文件,统计文件中的代码行
- PHP操作数据库