![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 83
SWEENEY_HE
hold on
展开
-
【动态规划】完全背包
题目描述设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。输入格式第一行:两个整数,M(背包容量,M<=200)和N(物品数量,N<=30);第2~N+1行:每行二个整数Wi、Ci,表示每个物品的重量和价值。输出格式仅一行,一个数,表示最大总价值。样例输入10 42 13 34 57 9样例输出12题解原创 2021-08-07 12:23:30 · 664 阅读 · 0 评论 -
【动态规划】01背包及其优化详解
题目描述有N件物品和一个容量为V的背包。放入第i件物品耗费的空间是Ci,得到的价值是Wi。求解在不超过容量的前提下,将哪些物品装入背包可使价值总和最大。输入格式第1行两个正整数,分别表示N和V,中间用一个空格隔开。第2行N个正整数,表示Ci,中间用一个空格隔开。第3行N个正整数,表示Wi,中间用一个空格隔开。其中:1≤N≤100,1≤V≤106,1≤Ci≤10000,1≤Wi≤10000。输出格式一行一个正整数,表示最大的价值总和。样例输入4 208 9 5 25 6原创 2021-08-06 13:02:49 · 2533 阅读 · 2 评论 -
【动态规划与二分】最长上升子序列
题目描述给定N个数,求这N个数的最长上升子序列的长度。样例输入72 5 3 4 1 7 6样例输出4思路:动态规划1.状态与初值该题中2.状态转移方程3.初值代码原创 2021-08-05 11:09:47 · 234 阅读 · 0 评论 -
【动态规划】大盗阿福
题目描述__阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。__这条街上一共有 N 家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。__作为一向谨慎作案的大盗,阿福不愿意冒着被警察追捕的风险行窃。他想知道,在不惊动警察的情况下,他今晚最多可以得到多少现金?输入格式输入的第一行是一个整数 T(T≤50),表示一共有 T 组数据。接下来的每组数据,第一行是一个整数 N(1≤N≤100,原创 2021-08-04 12:50:51 · 287 阅读 · 0 评论 -
【动态规划】酒鬼
题目描述1.Santo 刚刚与房东打赌赢得了一间在 New Clondike 的大客厅。今天,他来到这个大客厅欣赏他的奖品。 房东摆出了一行瓶子在酒吧上。瓶子里都装有不同体积的酒。2.令Santo高兴的是,瓶子中的酒都有不同的味道。房东说道: “你可以喝尽可能多的酒,但是一旦打开酒盖你就必须把它喝完,喝完一瓶后把它放回原处。还有一件最重要的事,你必须从左至右依次喝,并且不能连续超过三瓶,不然会给你带来坏运气。”3.现在可怜的 Santo 站在酒吧前努力的想着,他到底应该喝哪几瓶才能使喝的酒最多呢?请原创 2021-08-03 22:37:08 · 709 阅读 · 0 评论 -
粗解_最长公共子序列_动态规划
题目描述最长公共子序列是一个十分实用的问题,它可以描述两段文字之间的“相似度”,即它们的雷同程度,从而能够用来辨别抄袭。对一段文字进行修改之后,计算改动前后文字的最长公共子序列,将除此子序列外的部分提取出来,这种方法判断修改的部分,往往十分准确。最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ...原创 2018-08-31 21:43:18 · 267 阅读 · 0 评论 -
详解_动态规划DAG_硬币找零问题(完全背包)
写了好多结果一下卡住都没了。。。(csdn怕是把大部分服务器资源用在了广告投放上吧)参考数目:算法竞赛入门经典(第二版)NYOJ 995:描述在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资。我们应该注意到,人民币的硬币系统是 100,50,20,10,5,2,1,0.5,...原创 2018-08-29 17:37:04 · 1079 阅读 · 0 评论 -
详解_最长不上升子序列(拦截导弹)_动态规划
拦截导弹时间限制:3000 ms | 内存限制:65535 KB难度:3输入第一行输入测试数据组数N(1<=N<=10)接下来一行输入这组测试数据共有多少个导弹m(1<=m<=20)接下来行输入导弹依次飞来的高度,所有高度值均是大于0的正整数。输出输出最多能拦截的导弹数目样例输入28389 207 155 300 299 170...原创 2018-08-31 10:35:00 · 4609 阅读 · 0 评论 -
详解0-1背包_动态规划
参考书目:算法与竞赛入门经典(第2版)刘汝佳问题描述: 有n个重量和价值分别为wi 和 vi 的 物品,从这些物品中选择总重量不超过 W 的物品,求所有挑选方案中物品价值总和的最大值。分析:0-1背包与完全背包不同之处在于,每件物品只能使用一次。而每装载一件物品,都可以得到解的一部分,也就是多阶段决策问题,回顾完全背包(硬币凑数问题),由于每件物品都可以无限使用,因此每一次可...原创 2018-08-30 23:17:37 · 234 阅读 · 0 评论 -
真_详解动态规划_DAG_嵌套矩形
参考书目:算法竞赛入门经典(第2版)刘汝佳DAG: Directed ayclic graph // 有向无环图刘汝佳:DAG是动态规划的基础,很多问题都可以转化成DAG上的最短、最长或路径计数问题如NYOJ 16嵌套矩形问题,描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<...原创 2018-08-27 17:34:37 · 570 阅读 · 0 评论 -
动态规划入门二
本文主要通过一个题目来讲解动态规划的基本设计思路:数字三角形:题目:给出如下图所示的等腰三角形的行数和组成三角形的数字,从顶点往下走有两条路,左下或右下,输出路径最长的路。573 88 1 02 7 4 44 5 2 6 5动态规划的关键就在于找到“状态”及“状态转移方程”。一、状态百度百科这样定义‘状态’:状态是人或事物表现出来的形态。是指现实(或虚拟)事...原创 2018-03-24 21:46:17 · 239 阅读 · 0 评论 -
最有价值的会议及memset易错提醒
本文提要:在用malloc开辟空间时,若要用memset清空或者赋初值,不能直接套用memset(P,0,sizeof(p));(p是指针)而应先确定需要的大小n,用memset(p,0,n*sizeof(p));(详细原因可见本下文) /*动态规划的题目:给定不同会议的时间及其价值(会议时间会有重叠,已按结束时间升序排序),选定总价值之和最高的会议,且同一时间只能进行一场会议...原创 2018-02-14 23:12:27 · 4491 阅读 · 11 评论 -
动态规划入门一
dynamtic programming/动态规划概念:一种分治的思想,将原问题不断地划分成子问题,自底向上解决并保存各个子问题的结果,当遇到同样问题时,查表得到结果,避免重复运算。例如:Fibonacci sequence/斐波那契额数列问题:输入:要找到的项数输出:该项递推式:一.利用递归解决:int Fib(int n){if(n==1||n==2)return 1;return Fib(n...原创 2018-02-21 15:00:59 · 330 阅读 · 1 评论 -
子集和问题(动态规划解法)
/*给出一个集合,以及一个测试数,求给集合的子集的和是否等于该数(如:给出 7 10 11 20 9,以及16,则输出ture,给出15则输出false)*/第一种:(递归版)#include<stdio.h>#include<string.h>int solve_dp(int*p,int n,int key);int solve_dp(int*p,int n,int ke...原创 2018-02-20 12:30:11 · 5518 阅读 · 1 评论