最长公共子序列的问题描述为: 下面介绍动态规划的做法。 令 dp[i][j] 表示字符串 A 的 i 号位与字符串 B 的 j 号位之前的 LCS 长度(下标从 1 开始),如 dp[4][5] 表示 "sads" 与 “admin" 的 LCS 长度。那么可以根据 A[i] 和 B[j] 的情况, ...
分类:
其他好文 时间:
2018-02-09 15:09:32
阅读次数:
161
题意:求两个字符串的最长公共子序列的长度 解题思路: 状态方程: if(i == 0 || j == 0) dp[i,j] = 0 else if(X[i] == Y[j]) dp[i,j] = dp[i-1,j-1] + 1 else dp[i,j] = max(dp[i-1,j],dp[i,j- ...
分类:
其他好文 时间:
2018-02-05 00:21:25
阅读次数:
192
1.贪心算法,找零问题 2.贪婪算法:数字拼接问题 3.动态规划:最长上升子序列 3.动态规划:最长公共字符串 ...
分类:
编程语言 时间:
2018-02-02 21:45:50
阅读次数:
212
题目链接:http://poj.org/problem?id=1458 题意:给你两个字符串, 要你求出两个字符串的最长公共子序列长度。 思路: 首先令dp[i][j]==x表示A串的前i个字符和B串的前j个字符的最长公共子序列长度为x. 初始化: dp全为0. 状态转移: IfA[i]==B[j] ...
分类:
其他好文 时间:
2018-01-29 21:28:41
阅读次数:
156
这是一个腾讯笔试的编程题: 我们经常会用到一个LCS的问题。本题的唯一的一个巧妙之处在于。最后求解的字符串变为的是原来的字符串与其reverse之后的字符串的最大LCS,这样本题就得到了解决。 最长公共子序列求解:递归与动态规划方法 在做OJ题目的时候。常常会用到字符串的处理。比如。比較二个字符串相 ...
分类:
其他好文 时间:
2018-01-27 17:15:54
阅读次数:
213
考虑DP f[i][j][k]表示一行到i一行到j共取k块最大值,类似于最长公共子序列n^2那种 注意相等时可以一起拿 By:大奕哥 ...
分类:
其他好文 时间:
2018-01-26 22:47:23
阅读次数:
165
一、最长公共子串(Longest Common Substring) 遍历的时候用一个二维数组存储相应位置的信息,如果两个子串1与子串2相应位置相等:则看各自前一个位置是否相等,相等则该位置值B[i][j]=B[i-1][j-1]+1,不相等则置为1。如果两个子串1与子串2相应位置不相等,则B[i] ...
分类:
其他好文 时间:
2018-01-25 19:50:22
阅读次数:
128
最长公共子序列。 设f[i][j]为前第一个序列前i和第二个序列前j的最长公共子序列。 f[i][j]=f[i-1][j-1] (a[i]=b[j]) f[i][j]=max(f[i-1][j],f[i][j-1]) (a[i]!=b[j]) ...
分类:
其他好文 时间:
2018-01-23 16:41:58
阅读次数:
137
使用动态规划,关键是找出递推关系 定义矩阵dp,字符串s1="leet",s2="delete" 细心观察,其实不难发现如下规律: 我们可以这样来理解: 当计算dp[2][3]时,也就是要计算 "lee"和"dele" 的最长公共子序列。因为最后一位都相同,所以可以被看做是"del"和“le”的最长 ...
分类:
其他好文 时间:
2018-01-23 10:48:52
阅读次数:
157