动态规划dp
算法题
努 力 小 子
憨憨一个
展开
-
动态规划——01背包问题
给定一组有固定价值和固定重量的物品,以及一个已知最大承重量的背包,求在不超过背包最大承重量的前提下,能放进背包里面的物品的最大总价值。要求物品不能分割开来。01代表装或不装。问题的难点在于哪里呢?首先最终目的是总价值最大,而承重量则是一个限制条件。一般而言。对于背包问题的贪心算法是计算性价比后优先放入性价比高的物品,由于贪心类问题中允许把物体分开后放入背包,其实并不难。而在动态分配问题中呢...原创 2020-03-19 19:24:35 · 369 阅读 · 1 评论 -
动态规划最大子段和问题
#define NUM 101int a[NUM];int maxsum(int n){ int sum=0,b=0; for(int i=1; i<=n; i++) { if(b>0) b+=a[i]; else b=a[i]; if(b>sum) sum=b; } return sum;}我个人认为子段和问题有两个关键点,对当前最大值的...原创 2020-03-19 14:03:25 · 856 阅读 · 0 评论 -
浅谈动态规划dp
动态规划(英语:Dynamic programming,简称 DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的...原创 2020-03-14 16:30:42 · 224 阅读 · 0 评论 -
连续子数组的最大和
输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。贪心:class Solution {public: int maxSubArray(vector<...原创 2020-03-08 13:34:37 · 226 阅读 · 0 评论 -
动态规划之礼品分组
Description元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。Inpu...原创 2020-03-01 18:41:18 · 1054 阅读 · 0 评论