动态规划(dp)算法
文章平均质量分 59
HUST_Miao
这个作者很懒,什么都没留下…
展开
-
Ch1 0 1背包问题及其实例详解
题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}这个方程...原创 2018-05-10 22:29:43 · 1388 阅读 · 0 评论 -
Ch2 完全背包问题
题目 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本思路 这个问题非常类似于01背包问题,所不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或者不取两种,而是有取0件、取1件、取2件......直至取[V/Ci...转载 2018-05-16 14:08:26 · 150 阅读 · 0 评论 -
硬币拼凑指定面额的动态规划算法
拼凑钱币 题目来源:美团点评2017秋招笔试题 题目描述: 给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N员(N为0-10000的非负整数)的不同组合的个数。 输入描述: 输入为一个数字N,即需要拼凑的面额 输出描述: 输出也是一个数字,为组成N的组合个数。 示例1 输入 5 输出 2 解题思路: 这个题的思路是动态规划的算法思路...转载 2018-09-06 18:01:44 · 6785 阅读 · 0 评论 -
Maximum Subarray(最大子序列和)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 1.思路:初始化dp[0] = nums[0],dp[i] = max{dp[i] + nums[i] , nums[i]}, max(dp[i]...原创 2018-09-13 15:02:39 · 1898 阅读 · 0 评论