* dp矩阵最右下角的值为两个序列的最长公共子序列的长度 * @param str1 * @param str2 * @return */ public int[][] get_dp(char[] str1, char[] str2) { int[][] dp = new int[str1.length][str2.length]; dp[0][0] = str1[0] == str2[0] ? 1 : 0; for (int i = 1;...
动态规划与分治法对比: 相同点:都是通过子问题组合求解原问题 不同点:分治法将问题划分为不相交的子问题,求解再合并。动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题,此时如果用分治法就会出现重复计算求解。为了避免重复,动态规划对子问题只求解一次,将其保存在表格中,从而无需每求解一个子子问...