`
lknh
  • 浏览: 25419 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

DP求最长公共子序列长度

J# 
阅读更多
/**
*
* @author Administrator
*@version 2011.06.15
*动态规划法求最长公共子序列
*/
public class DPCommonSubstr {

/**
* @param args
*/
public static void main(String[] args) {
Object a[]={null,1,2,3,4,5,6,7};
Object b[]={null,1,2,3,-1,6,7,8};
MaxCommonSubSeq(a,b);

}
private static void MaxCommonSubSeq(Object a[],Object b[]){
int alen=a.length;
int blen=b.length;
//Object comm[] = new Object[alen];
//len[i][j]记录a的前i个序列与b的前j个学列的最长公共子序列长度
int len[][] = new int[alen][blen];
for(int i=0;i<alen;i++){
len[i][0]=0;
}
for(int j=0;j<blen;j++){
len[0][j]=0;
}
for(int i=1;i<alen;i++){
for(int j=1;j<blen;j++){
if(a[i]==b[j]){
len[i][j]=len[i-1][j-1]+1;

}
else{
len[i][j]=Math.max(len[i][j-1], len[i-1][j]);
}

}
}
System.out.println(len[alen-1][blen-1]);
}

}
0
0
分享到:
评论

相关推荐

    什么是最长公共子序列问题

    dp[i][0]和dp[0][j]都将被设置为0,因为空序列与任何序列的最长公共子序列都是空序列。 对于dp数组的其余部分,使用以下递推关系进行填充: if (X[i-1] == Y[j-1]) dp[i][j] = dp[i-1][j-1] + 1 else dp[i][j...

    最长公共子序列问题.docx

    给定两个序列,找出它们之间的最长公共子序列的长度。 下面是一个 Python 的动态规划实现: ```python def longest_common_subsequence(str1, str2): m = len(str1) n = len(str2) # 创建一个二维数组来存储子...

    最长公共子序列问题.md

    最长公共子序列问题 最长公共子序列问题(Longest Common Subsequence,LCS)是计算机科学和生物信息学中的一个经典问题。这个问题是寻找两个(或多个)给定序列的最长子序列,这个子序列在两个序列中都以相同的相对...

    最长公共子序列(dp)1

    最长公共子序列给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符

    zpengc#seu_monash_algorithm-design-and-analysis#1022 最长公共子序列1

    //最长公共序列和最长公共子串不是一个问题// longest common sequence// dp[i][j]表示长度为i的字符串和长度为j的字符串的lc

    leetcode跳跃-DataStructureAndAlgorithm:数据结构理论知识&LeetCode

    因此,最终整个序列的最长升序子序列长度是dp数组中的最大值 dp通项为\( dp[i] = max(dp[i], dp[j] + 1), i &gt; j 且 num[i] &gt; nums[j] \) 双串, tips:用一个二维数组表示两个字符串对应的子串的公共子串的长度的...

    leetcode2sumc-LeetCode:有我接受的JAVA解决方案

    leetcode 2 sum c LeetCode There ...来表示序列X的i位和序列Y的j位之前的最长公共子序列的长度。那么如果X[i] == Y[j],dp[i][j] = dp[i + 1][j + 1] + 1;否则dp[i][j] = max{d[[i - 1][j], dp[i][j -

    leetcode表现最好的时间段-DP-Interviews:DP-面试

    leetcode 表现最好的时间段动态规划 ...同样,您也可以使用最长公共子序列技术。 你需要在str和str.reverse()上做一个 LCS 然后str.length - LCS(str, str.reverse())会给你同样的答案。 高级字符串D

    LIS & LCS(动态规划)

    问题描述 东东有两个序列A和B。...这个题是基本的动态规划问题,LIS是最长上升子序列,LCS是最长公共子序列。 求解LIS就是设dp[i]为以当前元素结尾的最长上升序列,那么dp[i]=max(dp[j]∣j&lt;i&&a

    ACM算法模板和pku代码

    O(n^2)的最长上升子序列 nlogn最长上升子序列 高精度 计算几何 Graham扫描法 两线段交点 凸多边形面积 半平面交 计算几何库 数据结构 闭散列法整数hash 开散列法整数hash 字符串hash 堆 二维树状数组 ...

    java猜字母游戏源码-homework:算法作业

    最长公共子序列 八皇后问题 dp 出栈次序 给定一个足够大的栈,进栈序列为1,2,3,…,n,求有多少个不同的出栈序列个数 Catalan number 套用通项公式即可, 1, 2, 5, 14, 42, 132 看到前面几个数是这个,也基本都是...

Global site tag (gtag.js) - Google Analytics