最长连续公共子序列---动态规划
2017-09-01 17:54
357 查看
对于两个字符串,请设计一个高效算法,求他们的最长公共子序列的长度,
不要求字符连续
给定字符串A和B,请返回最长公共子序列的长度。保证两串长度均小于等于300。
测试样例:
1A2C3D4B56
B1D23CA45B6A
返回:6
不要求字符连续
给定字符串A和B,请返回最长公共子序列的长度。保证两串长度均小于等于300。
测试样例:
1A2C3D4B56
B1D23CA45B6A
返回:6
public class 最长公共子序列 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String A=sc.next(); String B=sc.next(); sc.close(); int n=A.length(); int m=B.length(); char a[]=A.toCharArray(); char b[]=B.toCharArray(); int[][] dp=new int[n + 1][m + 1]; //为字符串A的第一个字符到第 i 个字符串和字符串B的第一个字符串到第 j 个字符串的最长公共子序列 for (int i=1;i<=n;i++) { for (int j=1;j<= m;j++){ if (a[i-1]==b[j-1]){ dp[i][j]=dp[i-1][j-1]+1; }else{ dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]); } } } System.out.println(dp [m]); } }
相关文章推荐
- 最大子序列、最长连续公共子串(连续)、最长公共子序列(动态规划)
- poj1458(DP最长连续公共子序列)
- [ACM_动态规划] UVA 12511 Virus [最长公共递增子序列 LCIS 动态规划]
- 求最长连续公共子序列 POJ 3080
- 【100题】最长公共子串--非连续子串----动态规划
- 最长连续公共子序列
- TOJ 3601.Longest Contiguous Subsequence 最长连续公共子序列
- 最长公共字序列 动态规划 空间复杂度o(min{n,m})带打印
- 求两个字符串的最长的连续公共子串和求两个字符串的公共子序列
- 动态规划——最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串最小编辑距离日记整理
- POJ 3080 Blue Jeans(KMP:最长连续公共子序列)
- 动态规划 最长公共子序列 LCS,最长单独递增子序列,最长公共子串
- LongestCommonSequence 最长连续公共子序列(算法导论是最长公共子序列)
- 求最长连续递增公共子序列
- 一个看似简单却复杂的问题:求两个字符串的 左向右匹配 所有的 最长连续的 公共子字符串( 在每个字符串中先后次序相同的) 序列
- 如何求最长连续公共子序列和最长连续子字符串
- POJ 4044 寻找最长连续公共子序列
- 如何求最长连续公共子序列和最长连续子字符串
- [算法导论]动态规划---最长公共最序列问题
- 递归与动态规划---数组中的最长连续序列