参考
http://blog.csdn.net/u012102306/article/details/53184446
http://blog.csdn.net/hrn1216/article/details/51534607
最长公共子序列LCS
动态规划状态转移方程式
Python
递归
1 | def LCS(a, b): |
动态规划
DP矩阵,前面多一行一列0,因为第一排计算需要用到dp[i - 1][j], dp[i][j -1]
之前的代码是多出了直接填写第二行第二列为1,但是也可以没必要,添加的可以参考Java版本的。
1 | def lcs_dp(input_x, input_y): |
Java
动态规划
1 | public static int lcs(String str1, String str2) { |
最长公共回文子串
动态规划状态转移方程式
Python
动态规划
同上面相同:
1 | if i == 0 or j == 0: # 在边界上,自行+1 |
这句话可以省略,因为可以在循环钟推导出。
同时输出长度和字符串
1 | class LCS3: |
运行结果
1 | [1, 0, 0, 0, 1] |
Java
动态规划(懒得加上返回字符串了)
1 | public static int lcs3(String str1, String str2) { |