实现如下:

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的更多相关文章

  1. 动态规划 Dynamic Programming

    March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...

  2. Dynamic Programming

    We began our study of algorithmic techniques with greedy algorithms, which in some sense form the mo ...

  3. HDU 4223 Dynamic Programming?(最小连续子序列和的绝对值O(NlogN))

    传送门 Description Dynamic Programming, short for DP, is the favorite of iSea. It is a method for solvi ...

  4. hdu 4223 Dynamic Programming?

    Dynamic Programming? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  5. 算法导论学习-Dynamic Programming

    转载自:http://blog.csdn.net/speedme/article/details/24231197 1. 什么是动态规划 ------------------------------- ...

  6. Dynamic Programming: From novice to advanced

    作者:Dumitru 出处:http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=dynProg An impo ...

  7. HDU-4972 A simple dynamic programming problem

    http://acm.hdu.edu.cn/showproblem.php?pid=4972 ++和+1还是有区别的,不可大意. A simple dynamic programming proble ...

  8. [算法]动态规划(Dynamic programming)

    转载请注明原创:http://www.cnblogs.com/StartoverX/p/4603173.html Dynamic Programming的Programming指的不是程序而是一种表格 ...

  9. hdu 4972 A simple dynamic programming problem(高效)

    pid=4972" target="_blank" style="">题目链接:hdu 4972 A simple dynamic progra ...

随机推荐

  1. 使用sqoop将mysql数据导入到hadoop

    hadoop的安装配置这里就不讲了. Sqoop的安装也很简单. 完成sqoop的安装后,可以这样测试是否可以连接到mysql(注意:mysql的jar包要放到 SQOOP_HOME/lib 下): ...

  2. [IIS] eset/Restart/Recycling/Refresh 的区别

    iisreset -- 对象是整个IIS服务器,这个操作会先停止万维网的服务(World Wide Web Publishing Service)然后在重启此服务,因此所有的网站都会先停止服务然后在重 ...

  3. 把Java对象转为xml格式

    主要使用到的Java类有:javax.xml.bind.JAXBContext,javax.xml.bind.Marshaller(编排) 代码主要展示如下: public class Student ...

  4. 机器学习简易入门(四)- logistic回归

    摘要:使用logistic回归来预测某个人的入学申请是否会被接受 声明:(本文的内容非原创,但经过本人翻译和总结而来,转载请注明出处) 本文内容来源:https://www.dataquest.io/ ...

  5. .net控件事件中的Sender

    private void button2_Click(object sender, RoutedEventArgs e) { } 最近看WPF内容,回顾下.net大家天天都在用,却不是十分关注的一个对 ...

  6. 算法系列2《RSA》

    1. RSA介绍 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响 ...

  7. JavaScript高级程序设计之window对象

    在浏览器中window对象实现了JavaScript中的Global对象: window对象是最顶层的对象: 所有其他全局的东西都可以通过它的属性检索到. ; window.aa = ; // 所有全 ...

  8. JavaScript高级程序设计之数值数组排序

    如果数组中全是Nunber类型,则可以按照数值大小排序 , , , , ]; // asc升序函数 function compareAsc(value1, value2) { if (value1 & ...

  9. go语言值得学习的开源项目推荐

    谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也 ...

  10. TList,TObjectList 使用——资源释放

    TOjectList = Class (Tlist); TOjectList继承Tlist,从名字上看就可以知道它是专门为对象列表制作的,那么他到底丰富了那些功能呢? 首先是 TObject 作为对象 ...