利用动态规划和递归分别求两个串的最大公共子序列
来源:互联网 发布:mac中文件的绝对路径 编辑:程序博客网 时间:2024/06/06 02:14
利用动态规划和递归分别求两个串的最大公共子序列
相关代码
/* * 求两个子串的最大公共子序列 */public class Msin { /* * 1.利用递归的思想来处理的求最大公共子序列 */ public static int f(String str, String str2){ if(str.length() == 0 || str2.length() == 0) return 0; if(str.charAt(0) == str2.charAt(0)) return f(str.substring(1),str2.substring(1)) + 1; else return Math.max(f(str.substring(1), str2), f(str, str2.substring(1))); } /* * 2.利用动态规划来解决问题减小了时间复杂度 */ public static int LCS(String str1, String str2){ int[][] c = new int[str1.length()+1][str2.length()+1]; //建立矩阵 for(int row=0; row<=str1.length(); row++){ c[row][0] = 0; } for(int col=0; col<=str2.length(); col++){ c[0][col] = 0; } //关键代码 for(int i=1; i<=str1.length(); i++){ for(int j=1; j<=str2.length(); j++){ if(str1.charAt(i-1) == str2.charAt(j-1)){ c[i][j] = c[i-1][j-1] + 1; }else if(c[i][j-1] > c[i-1][j]){ c[i][j] = c[i][j-1]; }else{ c[i][j] = c[i-1][j]; } } } return c[str1.length()][str2.length()]; } public static void main(String[] args) { int result = LCS("ABCBDAB", "BDCADA"); System.out.println(result); }}
0 0
- 利用动态规划和递归分别求两个串的最大公共子序列
- 蓝桥杯常用算法知识点:【递归】求两个串的最大公共子序列的长度
- 递归小程序_求两个串的最大公共子序列的长度
- 动态规划:求一个序列的最大子序列和
- 动态规划算法求两个字符串的最大公共子串
- poj1458求两个串的最大公共子序列咯
- 动态规划方法求最大公共子序列
- 动态规划 LCS 求两个序列A,B中所有的最长公共子序列
- 动态规划 LCS 求两个序列A,B中全部的最长公共子序列
- 求两个字符序列的最大公共子序列
- 求两个字符串的最长公共子序列的长度(动态规划)
- 求两个字符串的最长公共子序列的长度(动态规划)
- 利用矩阵求两个序列的最长公共子序列
- 动态规划法求两个字符串的最长公共子序列
- 动态规划求两个字符串的连续最长公共子序列
- 两个字符串的最大公共子序列和最大公共子串
- 动态规划--最长公共子序列和公共子串
- 动态规划之最长公共子序列和最长公共字串,最大子序列和
- hdu 2669 Romantic 扩展欧几里得求线性方程模板题
- Linux下的神器介绍之Tmux分屏器
- HDU-3339-spfa+01背包
- linux kernel内存管理数据结构
- BZOJ 1060: [ZJOI2007]时态同步 树形DP
- 利用动态规划和递归分别求两个串的最大公共子序列
- pyspider
- MySQL--数据表查询记录
- 负载均衡(Load Balancing)学习笔记三——负载均衡算法
- 块存储,文件存储以及对象存储之间的比较
- ThreadLocal机制的一个简单应用
- 一月英语博客
- <a href=javascript:alert()>aaa</a>
- 图像处理的多线程计算