[编程题] lk 152. 乘积最大子数组-二维动态规划 题目 输入输出 方法1:使用一个二维的dp来表示当前节点的最大值和最小值情况 思想: ? 每个dp[i]位置用两个维度表示值信息,dp[i][0]表示目前的最大值情况,dp[i][1]表示目前的最小值情况如负数 ? ① 我们在遍历数组的时候, ...
分类:
编程语言 时间:
2020-07-30 22:21:57
阅读次数:
94
题目描述链接:https://leetcode-cn.com/problems/longest-palindromic-substring/ 解题思路:动态规划问题。 (1)状态标识dp[i][j]=0标识s[i]到s[j]这个子序列不为回文子串,dp[i][j]=1标识其为回文子串 (2)边界,对 ...
分类:
其他好文 时间:
2020-07-30 22:17:25
阅读次数:
96
1、题目描述: 有 n 件物品和一个最大承重为 W 的背包,每件物品的重量是 𝑤i、价值是 𝑣i 在保证总重量不超过 W 的前提下,选择某些物品装入背包,背包的最大总价值是多少? 注意:每个物品只有 1 件,也就是每个物品只能选择 0 件或者 1件。 假设 values 是价值数组,weight ...
分类:
其他好文 时间:
2020-07-30 22:16:49
阅读次数:
91
[编程题] nk:连续子数组的最大和 输入输出 无 思路 方法:动态规划 Java代码 public class Solution { //方法1:动态规划 public int FindGreatestSumOfSubArray1(int[] array) { //[6,-3,-2,7,-15,1 ...
分类:
编程语言 时间:
2020-07-30 01:38:35
阅读次数:
79
题目描述链接:https://leetcode-cn.com/problems/longest-common-subsequence/ 解题思路:经典的LCS最长公共子序列问题:使用动态规划进行解题, (1)状态标识dp[i][j]标识text1[0]到text1[i-1]与text2[0]到tex ...
分类:
其他好文 时间:
2020-07-29 21:54:41
阅读次数:
78
具有胜败游戏的基础 通过分析各个状态的胜败条件,判断必胜态和必败态,是具有胜败游戏的基础。 首先判断最终状态的胜败(比如两人轮流取硬币,没有硬币可取的一方失败,则硬币数$x=0$为必败态) 如果某个状态的后继状态中存在必败态,则这个状态为必胜态 如果某个状态的后继状态全部为必胜态,则这个状态为必败态 ...
分类:
其他好文 时间:
2020-07-29 17:29:51
阅读次数:
58
动态规划整体思路是用递归问题求解,然后对递归过程中存在的大量重叠子问题进行优化, 自顶向下的求解的思路为记忆化搜索,自底向上的解决问题的思想就是动态规划,自顶向下的求解通常更好理解,我们理解后在改成自底向上的动态规划求解; 剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那 ...
分类:
编程语言 时间:
2020-07-28 14:17:59
阅读次数:
78
动态规划的核心是找到解题路径中的重复子问题,避免重复计算。 找出问题间的递归关系,用问题解决问题需要培养归纳的思维。 问题定义的好坏直接影响到可以定位出的重叠子问题的多少,可以找出的重叠子问题越多,问题定义越好。 下面是两种问题的定义,效率差距非常大。 解法1,超时: public final in ...
分类:
其他好文 时间:
2020-07-28 14:16:21
阅读次数:
73
题目描述: 方法一:动态规划 O(mnlogmn) class Solution(object): def longestIncreasingPath(self, matrix): if not matrix or not matrix[0]: return 0 m, n = len(matrix) ...
分类:
其他好文 时间:
2020-07-27 15:46:06
阅读次数:
70
前言 上一节通过两个经理案例初步认识动态规划,今天这一节主要讲动态规划的理论知识。 “一个模型三个特征”理论讲解 实际上,动态规划作为一个非常成熟的算法思想,这部分理论总结为“一个模型三个特征”。 一个模型 一个模型指动态规划适合解决的问题模型。这个模型定义为“多阶段决策最优解模型”。 一般是用动态 ...
分类:
编程语言 时间:
2020-07-27 15:39:05
阅读次数:
71