Dynamic Programming - Part2

实现如下:
public static void main(String[] args) {
String squence1 = "ABCBDAB";
String squence2 = "BDCABC";
int len1 = squence1.length(), len2 = squence2.length();
if (len1 <= 0 || len2 <= 0) {
System.out.println("empty squence!");
return;
}
int[][] allCommonSubLen = new int[len1+1][len2+1];
//print all sub-squences
String subSquence = "";
//初始化i=0, j=0
for (int i = 0; i < len1; i++) {
allCommonSubLen[i][0] = 0;
}
for (int j = 0; j < len2; j++) {
allCommonSubLen[0][j] = 0;
}
//迭代关系
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
char c1 = squence1.charAt(i-1);
char c2 = squence2.charAt(j-1);
if (c1 == c2) {
//subSquence += c1;
allCommonSubLen[i][j] = allCommonSubLen[i-1][j-1] + 1;
//System.out.println("i="+i+" ; j="+j+" ; subSquence="+subSquence);
} else {
allCommonSubLen[i][j] = Math.max(allCommonSubLen[i-1][j], allCommonSubLen[i][j-1]);
if (allCommonSubLen[i][j] == allCommonSubLen[i-1][j]) {
//subSquence += c2;
//System.out.println("i="+i+" ; j="+j+" ; subSquence="+subSquence);
} else {
//subSquence += c1;
//System.out.println("i="+i+" ; j="+j+" ; subSquence="+subSquence);
}
}
}
}
//System.out.println(allCommonSubLen[len1][len2]);
}
Dynamic Programming - Part2的更多相关文章
- 动态规划 Dynamic Programming
March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...
- Dynamic Programming
We began our study of algorithmic techniques with greedy algorithms, which in some sense form the mo ...
- HDU 4223 Dynamic Programming?(最小连续子序列和的绝对值O(NlogN))
传送门 Description Dynamic Programming, short for DP, is the favorite of iSea. It is a method for solvi ...
- hdu 4223 Dynamic Programming?
Dynamic Programming? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- 算法导论学习-Dynamic Programming
转载自:http://blog.csdn.net/speedme/article/details/24231197 1. 什么是动态规划 ------------------------------- ...
- Dynamic Programming: From novice to advanced
作者:Dumitru 出处:http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=dynProg An impo ...
- HDU-4972 A simple dynamic programming problem
http://acm.hdu.edu.cn/showproblem.php?pid=4972 ++和+1还是有区别的,不可大意. A simple dynamic programming proble ...
- [算法]动态规划(Dynamic programming)
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4603173.html Dynamic Programming的Programming指的不是程序而是一种表格 ...
- hdu 4972 A simple dynamic programming problem(高效)
pid=4972" target="_blank" style="">题目链接:hdu 4972 A simple dynamic progra ...
随机推荐
- 使用sqoop将mysql数据导入到hadoop
hadoop的安装配置这里就不讲了. Sqoop的安装也很简单. 完成sqoop的安装后,可以这样测试是否可以连接到mysql(注意:mysql的jar包要放到 SQOOP_HOME/lib 下): ...
- [IIS] eset/Restart/Recycling/Refresh 的区别
iisreset -- 对象是整个IIS服务器,这个操作会先停止万维网的服务(World Wide Web Publishing Service)然后在重启此服务,因此所有的网站都会先停止服务然后在重 ...
- 把Java对象转为xml格式
主要使用到的Java类有:javax.xml.bind.JAXBContext,javax.xml.bind.Marshaller(编排) 代码主要展示如下: public class Student ...
- 机器学习简易入门(四)- logistic回归
摘要:使用logistic回归来预测某个人的入学申请是否会被接受 声明:(本文的内容非原创,但经过本人翻译和总结而来,转载请注明出处) 本文内容来源:https://www.dataquest.io/ ...
- .net控件事件中的Sender
private void button2_Click(object sender, RoutedEventArgs e) { } 最近看WPF内容,回顾下.net大家天天都在用,却不是十分关注的一个对 ...
- 算法系列2《RSA》
1. RSA介绍 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响 ...
- JavaScript高级程序设计之window对象
在浏览器中window对象实现了JavaScript中的Global对象: window对象是最顶层的对象: 所有其他全局的东西都可以通过它的属性检索到. ; window.aa = ; // 所有全 ...
- JavaScript高级程序设计之数值数组排序
如果数组中全是Nunber类型,则可以按照数值大小排序 , , , , ]; // asc升序函数 function compareAsc(value1, value2) { if (value1 & ...
- go语言值得学习的开源项目推荐
谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也 ...
- TList,TObjectList 使用——资源释放
TOjectList = Class (Tlist); TOjectList继承Tlist,从名字上看就可以知道它是专门为对象列表制作的,那么他到底丰富了那些功能呢? 首先是 TObject 作为对象 ...