
动态规划
文章平均质量分 77
十年尚可
仰望星空脚踏实地
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从左上角到右下角的路径,到底用深搜还是动规??
在力扣划水的时候看到一道这样的题目:62. 不同路径用动态规划的思想进行求解:我们用 dp[i][j]dp[i][j]dp[i][j]表示从左上角走到 (i,j)(i, j)(i,j) 的路径数量,其中 iii 和 jjj 的范围分别是 [0,m)[0, m)[0,m) 和[0,n)[0, n)[0,n)。由于我们每一步只能从向下或者向右移动一步,因此要想走到 (i,j)(i, j)(i,j),如果向下走一步,那么会从 (i−1,j),(i−1,j)(i-1, j),(i−1,j)(i−1,j),原创 2021-09-20 21:43:07 · 953 阅读 · 0 评论 -
力扣的股票问题python
输入关键字股票,出来的题目如下:剑指 Offer 63. 股票的最大利润一次买卖,不求代码NB,只求解题,用动态规划:class Solution: def maxProfit(self, prices: List[int]) -> int: n = len(prices) if n == 0 or n == 1: return 0 dp = [[0,0]for i in range(n)] #原创 2021-09-07 11:00:42 · 225 阅读 · 0 评论 -
蓝桥杯 历届试题 买不到的数目python实现(数论)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装...原创 2020-04-02 16:33:18 · 859 阅读 · 1 评论 -
区间动态规划详解
前段时间遇到石子合并问题,看着题解A了,以为学会了区间DP,再次遇到能量项链这个问题的时候大脑还是一片空白,只能重新认识一下区间动态规划了。翻过很多博客,基本上都是题解,真正对区间动态规划本身的讲解几乎没有,可能是我没找到吧。区间动态规划,顾名思义,就是动态规划过程中求一个区间的最优解。通过将一个大的区间分为很多个小的区间,求其小区间的解,然后一个一个的组合成一个大的区间而得出最终解,有没有发现,这完全就是分治的思想。动态规划三部曲:1.状态:用dp[i][j]表示区间(i,j)的最优解2.状态转转载 2020-06-10 09:43:41 · 476 阅读 · 1 评论 -
百练 1088:滑雪 python实现(动态规划、记忆化搜索)
题目:总时间限制: 1000ms 内存限制: 65536kB描述Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四原创 2020-06-09 17:27:40 · 1304 阅读 · 0 评论 -
历届试题 包子凑数Python实现(完全背包,动规)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。当然有时包子大叔无论如何也凑不出顾客想买的数量。比如原创 2020-05-10 10:11:46 · 1460 阅读 · 0 评论 -
蓝桥杯 算法训练 开心的金明Python(背包,动规)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎 么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一 个重要度,分为5等:用整数1~5表...原创 2020-04-16 17:19:42 · 631 阅读 · 3 评论 -
蓝桥杯 算法训练 最大体积Python实现(背包,动规)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积。假如每个物品有无限件可用,那么有些体积是永远也装不出来的。为了尽量装满背包,附中的OIER想要研究一下物品不能装出的最大体积。题目保证有解,如果是有限解,保证不超过2,000,000,000 如果是无限解,则输出0输入格式 第一行一个整数n(...原创 2020-04-16 17:08:57 · 584 阅读 · 0 评论 -
蓝桥杯 算法训练 拦截导弹Python实现(动规 贪心)
问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所...原创 2020-03-14 14:56:43 · 3063 阅读 · 1 评论 -
蓝桥杯 算法训练 数的划分Python实现(动态规划)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。输入格式 n,k输出格式 一个整数,即不同的分法样例输入7 3样例输出4 {四种分法为:1,1,5;1,2,4...原创 2020-03-09 20:02:47 · 1190 阅读 · 1 评论 -
蓝桥杯 算法训练 装箱问题 Python实现(动态规划、背包问题)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入格式 第一行为一个整数,表示箱子容量; 第二行为一个整数,表示有n个物品; 接下来n行,每行一个整数表示这n个物品的各自体积...原创 2020-03-06 16:24:46 · 2536 阅读 · 0 评论 -
蓝桥杯 算法训练 传纸条Python实现(四维动态规划+优化)
资源限制时间限制:1.0s 内存限制:512.0MB问题描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n...原创 2020-03-06 00:15:50 · 851 阅读 · 0 评论 -
蓝桥杯 算法训练 方格取数Python实现(动态规划)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 设有N * N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。 某人从图的左上角的A 点(1,1)出发,可以向下行走,也可以向右走,直到到达右下角的B点(N,N)。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。就是说路径不能重复 此人从A点到B 点共走两...原创 2020-03-05 16:47:16 · 1519 阅读 · 0 评论 -
蓝桥杯 算法训练 乘积最大Python实现(动态规划)详细
资源限制时间限制:1.0s 内存限制:256.0MB问题描述今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分...原创 2020-03-02 14:11:28 · 1685 阅读 · 0 评论 -
蓝桥杯 算法提高 最大值路径Python实现(动态规划)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 刷微博,编程序。如下图所示,@北京发布 提出了如下“头脑震荡”问题。对此问题做一般化描述: 有n阶方阵,从矩阵的左下角元素为起点,从行或列(水平或垂直)两个方向上移动,直到右上角。求出有多少条路径可以使得经过的元素累加值最大,最大值是多少。 输入格式 共有n+1行。 第一行整数n,表示矩阵的阶数,2<...原创 2020-02-29 10:26:39 · 1379 阅读 · 0 评论 -
蓝桥杯 算法训练 邮票 Python实现(动态规划)
资源限制时间限制:1.0s 内存限制:512.0MB问题描述 给定一个信封,有N(1≤N≤100)个位置可以贴邮票,每个位置只能贴一张邮票。我们现在有M(M<=100)种不同邮资的邮票,面值为X1,X2….Xm分(Xi是整数,1≤Xi≤255),每种都有N张。显然,信封上能贴的邮资最小值是min(X1, X2, …, Xm),最大值是 N*max(X1, X2, …, Xm)...原创 2020-02-28 20:34:57 · 1202 阅读 · 0 评论 -
蓝桥杯 算法训练 最大的算式(Python实现 动态规划(一))
问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如: N=5,K=2,5个数字分别为1、2、3、4、5,可以加成: 12(3+4+5)=24 1*(2+3)(4+5)=45 (12+3)*(4+5)=45 ……输入格式...原创 2020-02-02 20:36:12 · 1402 阅读 · 4 评论 -
蓝桥杯 算法训练 最大的算式(Python实现 动态规划(二))
问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如: N=5,K=2,5个数字分别为1、2、3、4、5,可以加成: 12(3+4+5)=24 1*(2+3)(4+5)=45 (12+3)*(4+5)=45 ……输入格式...原创 2020-02-02 22:17:34 · 960 阅读 · 0 评论 -
蓝桥杯 算法训练 K好数 (Python 实现(动态规划(三)))
问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格式输入包含两个正整数,K和L。输出格式输出一个整数,表示答案对1000000007取模后的值。...原创 2020-02-03 22:26:40 · 1869 阅读 · 7 评论 -
蓝桥杯 算法提高 和谐宿舍2 (Python3 实现)(动态规划)
问题描述 我的某室友学过素描,墙上有n张他的作品。这些作品都是宽度为1,高度不定的矩形,从左到右排成一排,且底边在同一水平线上。 宿舍评比就要来了,为了及格,我们决定买不多于m块的矩形木板,把这些作品和谐掉。要求木板也从左到右排成一排,且底边与作品的底边在同一水平线上。 在能够把所有作品和谐掉的前提下,我们希望这些木板的面积和最小,问最小面积和。输入格式 第一行两个数n和m,表...原创 2020-02-08 22:58:08 · 1017 阅读 · 3 评论 -
蓝桥杯 算法训练 未名湖边的烦恼Python(递归 简单动态规划两种方法)
问题描述 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式 两个整数,表示m和n输出格式 一...原创 2020-02-13 15:30:31 · 674 阅读 · 0 评论 -
蓝桥杯 算法训练 6-1 递归求二项式系数值Python实现(递归 简单动规)
问题描述样例输入一个满足题目要求的输入范例。3 10样例输出120与上面的样例输入对应的输出。数据规模和约定 输入数据中每一个数的范围。 例:结果在int表示时不会溢出。分析:题目把递归条件都给出来了,写递归的代码很简单,但是递归的消耗的时间和内存都很大,稍微改一下,变成简单动规,复杂度会小很多,两种写法都能AC,下面给出代码:递归AC代码:while True:...原创 2020-02-22 10:06:25 · 704 阅读 · 2 评论 -
蓝桥杯 算法训练 数字三角形 Python实现(动态规划)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数0,1,…99;输入格式 文件中首先读到的是三角形的行数。接下来描述整个三角形输出格式 ...原创 2020-02-23 22:36:19 · 2001 阅读 · 7 评论 -
蓝桥杯 算法提高 秘密行动Python实现(动态规划)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 小D接到一项任务,要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点,每层的高度都不一样,同时,小D也拥有一项特殊能力,可以一次向上跳跃一层或两层,但是这项能力无法连续使用。已知向上1高度消耗的时间为1,跳跃不消耗时间。由于事态紧急,小D想知道他最少需要多少时间到达顶层。输入格式 第一行包含一个整数n...原创 2020-02-24 17:46:03 · 727 阅读 · 2 评论 -
蓝桥杯 算法训练 摆动序列Python实现(动态规划)详解
资源限制时间限制:1.0s 内存限制:512.0MB问题描述 如果一个序列满足下面的性质,我们就将它称为摆动序列: 1. 序列中的所有数都是不大于k的正整数; 2. 序列中至少有两个数。 3. 序列中的数两两不相等; 4. 如果第i – 1个数比第i – 2个数大,则第i个数比第i – 2个数小;如果第i – 1个数比第i – 2个数小,则第i个数比第i – 2个数大。...原创 2020-02-26 13:03:16 · 1732 阅读 · 0 评论