- 浏览: 778465 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
萨琳娜啊:
Java读源码之Netty深入剖析网盘地址:https://p ...
Netty源码学习-FileRegion -
飞天奔月:
写得有趣 ^_^
那一年你定义了一个接口 -
GoldRoger:
第二个方法很好
java-判断一个自然数是否是某个数的平方。当然不能使用开方运算 -
bylijinnan:
<script>alert("close ...
自己动手实现Java Validation -
paul920531:
39行有个bug:"int j=new Random ...
java-蓄水池抽样-要求从N个元素中随机的抽取k个元素,其中N无法确定
http://zhedahht.blog.163.com/blog/static/254111742007376431815/
http://blog.csdn.net/yysdsyl/article/details/4226630
http://blog.csdn.net/yysdsyl/article/details/4226630
import java.util.ArrayList; import java.util.List; public class LongestCommonSubsequence { /** * Q 56 最长公共子序列 * 如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。 * 注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。 * 请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。 * 例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们的最长公共子串 * 则输出它们的长度4,并打印任意一个子串。 * see http://zhedahht.blog.163.com/blog/static/254111742007376431815/ * see also http://blog.csdn.net/yysdsyl/article/details/4226630 */ public static void main(String[] args) { LongestCommonSubsequence lcs=new LongestCommonSubsequence(); String[] str={"BDCABA","ABCBDAB","abcd","ad"}; //test "BDCABA","ABCBDAB" int length=lcs.findLCS(str[0],str[1]); System.out.println(length); System.out.println(lcs.list); lcs.list.clear(); //test "abcd","ad" length=lcs.findLCS(str[2],str[3]); System.out.println(length); System.out.println(lcs.list); } /* / 0 if i<0 or j<0 //case 1 c[i,j]= c[i-1,j-1]+1 if i,j>=0 and xi=xj //case 2 \ max(c[i,j-1],c[i-1,j] if i,j>=0 and xi≠xj //case 3 */ public int findLCS(String strA,String strB){ if(strA==null||strB==null){ return 0; } int len1=strA.length(); int len2=strB.length(); if(len1==0||len2==0){ return 0; } char[] lettersA=strA.toCharArray(); char[] lettersB=strB.toCharArray(); int[][] LCS_Length=new int[len1][len2]; //'direction' records how lcs[i][j] come from.It's used to print LCS. Direction[][] direction=new Direction[len1][len2]; for(int i=0;i<len1;i++){ for(int j=0;j<len2;j++){ if(i==0 || j==0){//case 1 if(lettersA[i]==lettersB[j]){ LCS_Length[i][j]=1; direction[i][j]=Direction.LeftUp; }else{ if(i>0){ LCS_Length[i][j]=LCS_Length[i-1][j]; direction[i][j]=Direction.Up; } if(j>0){ LCS_Length[i][j]=LCS_Length[i][j-1]; direction[i][j]=Direction.Left; } } }else{ if(lettersA[i]==lettersB[j]){//case 2 LCS_Length[i][j]=LCS_Length[i-1][j-1]+1; direction[i][j]=Direction.LeftUp; }else{//case 3 if(LCS_Length[i][j-1]>LCS_Length[i-1][j]){ LCS_Length[i][j]=LCS_Length[i][j-1]; direction[i][j]=Direction.Left; }else{ LCS_Length[i][j]=LCS_Length[i-1][j]; direction[i][j]=Direction.Up; } } } } } printLCS(direction,lettersA,lettersB,len1-1,len2-1); return LCS_Length[len1-1][len2-1]; } private List<Character> list=new ArrayList<Character>(); //from lcs[len-1][len-1] to lcs[0][0] public void printLCS(Direction[][] direction,char[] lettersA,char[] lettersB,int row,int col){ if(lettersA==null||lettersB==null){ return; } int len1=lettersA.length; int len2=lettersB.length; if(len1==0||len2==0||!(row<len1&&col<len2)){ return; } if(direction[row][col]==Direction.LeftUp){ if(row>0&&col>0){ printLCS(direction,lettersA,lettersB,row-1,col-1); } list.add(lettersA[row]); } if(direction[row][col]==Direction.Left){ if(col>0){ printLCS(direction,lettersA,lettersB,row,col-1); } } if(direction[row][col]==Direction.Up){ if(row>0){ printLCS(direction,lettersA,lettersB,row-1,col); } } } public enum Direction{Up,Left,LeftUp}; }
发表评论
-
百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序
2012-12-21 18:17 4051import java.util.Arrays; ... -
java-60-在O(1)时间删除链表结点
2012-03-12 00:12 1960public class DeleteNode_O1_ ... -
java-57-用两个栈实现队列&&用两个队列实现一个栈
2012-03-11 11:25 10754import java.util.ArrayList; ... -
java-26-左旋转字符串
2012-03-11 11:23 3049public class LeftRotateString ... -
java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶
2012-03-08 20:41 4948import java.util.Stack; pu ... -
java-54- 调整数组顺序使奇数位于偶数前面
2012-03-06 21:09 3663import java.util.Arrays; imp ... -
java-63-在字符串中删除特定的字符
2012-03-05 16:47 2294public class DeleteSpecific ... -
java-67-扑克牌的顺子.从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大
2012-03-05 15:46 6205package com.ljn.base; import ... -
java-68-把数组排成最小的数。一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的。例如输入数组{32, 321},则输出32132
2012-03-05 10:38 6155import java.util.Arrays; imp ... -
java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素
2012-02-29 10:30 3504public class MinOfShiftedAr ... -
java-67- n个骰子的点数。 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。
2012-02-28 00:00 6394public class ProbabilityOfD ... -
java-71-数值的整数次方.实现函数double Power(double base, int exponent),求base的exponent次方
2012-02-27 21:43 3006public class Power { /* ... -
java-73-输入一个字符串,输出该字符串中对称的子字符串的最大长度
2012-02-27 16:14 5787public class LongestSymmtri ... -
java-75-二叉树两结点的最低共同父结点
2012-02-27 11:27 1518import java.util.LinkedList; ... -
java-74-数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字
2012-02-11 10:56 2470public class OcuppyMoreThan ... -
java-17-在一个字符串中找到第一个只出现一次的字符
2012-02-11 10:04 5837public class FirstShowOnlyO ... -
java-50-输入两棵二叉树A和B,判断树B是不是A的子结构
2012-02-10 23:26 1947思路来自:http://zhedahht.blog.163.c ... -
java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
2012-02-10 10:55 4245public class PrintMatrixClo ... -
java-61-在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差. 求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5,
2012-02-09 23:08 2186思路来自:http://zhedahht. ... -
java-37.有n 个长为m+1 的字符串,如果某个字符串的最后m 个字符与某个字符串的前m 个字符匹配,则两个字符串可以联接
2012-01-27 22:46 2298public class MaxCatenate { ...
相关推荐
1. 掌握动态规划法的设计思想并能熟练运用 2. 强化动手编程的能力 二. 实验内容 用动态规划法求两个序列的最大公共子序列 三. 算法思想 1. 分析可得如下动态规划函数: ① L[0][0]=L[i][0]=L...
java解决动态规划中最长公共子序列(longest common sequence)问题
最长公共子序列问题 Java动态规划求解最长公共子序列问题.zip
关于动态规划算法的最长公共子序列的Java代码,帮助了解算法实现过程
最长公共子序列问题 基于java实现动态规划求解最长公共子序列问题
LCS 最长公共子序列 用JAVA实现,直接导入可运行,实例可以另外自己定义
主要介绍了Java基于动态规划法实现求最长公共子序列及最长公共子字符串,简单描述了动态规划法的概念、原理,并结合实例形式分析了Java使用动态规划法求最长公共子序列以及最长公共子字符串相关实现技巧,需要的朋友...
所有最长公共子序列(LCS)——动态规划——Java---所有!!!所有!!!所有!!!
java算法分析与设计之最长公共子序列问题源代码 算法作为计算机专业学生的必修课,同时也是软件开发过程中必备的编程思想,对学习研究计算机专业意义重大;正因为这门课程难,所以除了相关方面的书籍,网络资源少的...
字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk-1”是X的子序列,存在X的一个...
mysql-connector-java-5.1.37.zip
mysql-connector-java-5.1.27.jar mysql-connector-java-5.1.27.jar
5.6.20 最新JDBC mysql-connector-java-5.1.32-bin.jar
mysql-connector-java-5.1.7-bin.jar,MySQL的jdbc的驱动
java连接mysql数据库的jar包,最新纯净正版。直接将mysql-connector-java-5.1.45-bin.jar导入项目中即可使用。
mysql-connector-java-3.0.16-ga-bin.jar 连接mysql的java包
mysql-connector-java-5.1.47 jar包,在利用jdbc连接数据库用
mysql-connector-java-5.1.42-bin.jar 官网下载的驱动