摘要:本系列最后一篇训练线性动规的基本套路的随笔,后面进阶更高级的动规类型入门(树形动规、区间动规、背包动规等). 1.正文:以下主要通过几道典型的例题再训练一下线性动规的做法。 复习一下: (1)题意分析; (2)基于分析数学建模; (3)判定是否可以符合使用动规的两大前置条件(最优子结构和无后效 ...
分类:
其他好文 时间:
2020-06-08 00:21:11
阅读次数:
89
题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶: 如果你已经实现复杂度为 O(n) 的解法,尝 ...
分类:
其他好文 时间:
2020-06-07 15:12:23
阅读次数:
64
动态规划 思路: 参考62. 不同路径 代码: class Solution: def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int: m = len(obstacleGrid) n = len(obstac ...
分类:
其他好文 时间:
2020-06-07 15:05:47
阅读次数:
65
动态规划 思路: dp[i][j]表示走完 i,j 位置所需的最短路径,由于只能向下或者向右,所以第一行和第一列中每个值为当前值加上前一个值,即dp[0][j]=dp[0] [j]+dp[0][j-1],dp[i][0] = dp[i][0]+dp[i-1][0]。非第一行和第一列的值为当前值加上其 ...
分类:
其他好文 时间:
2020-06-07 14:57:26
阅读次数:
52
代码实现: goods = {'吉他':{'wei':1,'val':1500} ,'音响':{'wei':4,'val':3000},'电脑':{'wei':3,'val':2000}} def bag(goods,con): # con: 背包容量, goods,商品 # 获取最轻的物品重量 m ...
分类:
编程语言 时间:
2020-06-06 18:37:28
阅读次数:
72
完成的游戏:场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时,开始继续下落。 ...
分类:
其他好文 时间:
2020-06-03 20:24:38
阅读次数:
61
动态规划 思路: 由于题目只要求得到最大和,故可以遍历数组nums,遍历的同时把每个元素的值更新为当前位置到之前所能得到的最大和,遍历完成后返回数组中最大值即可。更新的动态规划转移方程为:nums[i] = nums[i] + max(nums[i-1],0) 代码: class Solution: ...
分类:
其他好文 时间:
2020-06-03 15:24:56
阅读次数:
60
《算法图解》第九章,小偷的背包问题,顺便记录一下: import copy def fillbag(bagsize, goods): bagsvalue = [[{}]*bagsize for x in range(len(goods))] def bestbag( m, n, leftweight ...
分类:
其他好文 时间:
2020-06-03 00:28:35
阅读次数:
68
目录 面试题14- I. 剪绳子/343. 整数拆分 面试题42. 连续子数组的最大和/53. 最大子序和 面试题47. 礼物的最大价值 一、面试题14- I. 剪绳子/343. 整数拆分 1.1 问题: 给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最... ...
分类:
编程语言 时间:
2020-06-03 00:18:36
阅读次数:
74
Dijkstra也叫迪杰斯特拉,是典型最短路径算法,计算一个起始节点到路径中其他所有节点的最短路径的算法和思想。在一些专业课程中如数据结构,图论,运筹学等都有介绍。其思想是一种基础的求最短路径的算法,通过基础思想的变化可以解决很多复杂问题,如导航线路,动态规划等。 1|0Dijkstra 算法思想介 ...
分类:
编程语言 时间:
2020-06-02 13:13:16
阅读次数:
52