动态规划
TreeCode
我喜欢种树
展开
-
动态规划联系四—最长上升子序列
问题(力扣原题第300题):给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。思路:动态规划用一个数组dp[]保存给定数组中每一个元素本身对应的最大上升子序列长度,最后返回dp[]数组中的最大值.代码:...原创 2020-10-05 20:30:33 · 100 阅读 · 0 评论 -
动态规划练习三(背包问题扩展)
问题:将若干体积不同的物品放入背包中,是否能使的背包恰好放满例如:背包容量为16物品体积: 3 4 5 6 7答案:true思路:用一个二维数组来表示前n件物品组合是否放满指定容量大小的背包,例如:bag[2][3]表示前两件物品的选择方式有没有可能放满容量为3的背包设:i 为物品编号,cost[ i ]表示第i件物品所代表的体积;j为容量状态转移方程:bag[ i ][ j ] = bag[ i-1 ][ j ] OR bag[ i-1 ][ j-cost[ i ] ];出口:1.只原创 2020-10-03 14:55:17 · 156 阅读 · 2 评论 -
动态规划练习二(背包问题)
背包问题入门级难度:问题:原创 2020-10-03 01:01:02 · 284 阅读 · 0 评论 -
动态规划入门练习一(java)
问题给定一个数组,取其中若干个数,使取走的数字和达到最大,要求:不能取位置连续的数字例一:[1,4,1,2,9]取[4,9]达到最大13例二:[1,2,4,1,7,8,2]取[1,4,7,2]达到最大14思路设给定数组为nums[ i ]创建一个dp数组:dp[ i ],用于存储每一步的最大值。状态转移方程:dp[ i ] = max{nums[ i ]+dp[ i-2 ],dp[ i-1 ]}出口:dp[0] = nums[0],dp[1] = max{nums[0],nums[1]}原创 2020-09-30 11:31:40 · 88 阅读 · 0 评论 -
整数拆分题解
整数拆分题解问题描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36说明: 你可以假设 n 不小于 2 且不大于 58题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/integer-bre原创 2020-07-30 23:52:45 · 802 阅读 · 0 评论 -
leetcode 70、爬楼梯问题
动态规划解爬楼梯问题问题描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。解题思路当我拿到这个问题时,首先想到就是动态规划,...原创 2020-06-27 22:32:25 · 122 阅读 · 0 评论