![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 75
来老铁干了这碗代码
算法爱好者 终生学习践行者 雨雪刀霜阻不住 不成大神誓不休
展开
-
C++题解-Leecode 375. 猜数字大小 II——Leecode每日一题系列
今天是坚持每日一题打卡的第十七天题目链接:https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii/submissions/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述我们正在玩一个猜数游戏,游戏规则如下:我从 1 到 n 之间选择一个数字。你来猜我选了哪个数字。如果你猜到正确的数字,就会 赢得游戏 。如果你猜错了,那么我会告诉原创 2021-11-13 09:54:59 · 264 阅读 · 0 评论 -
Leecode 1218. 最长定差子序列——Leecode每日一题系列
今天是坚持每日一题打卡的第十天题目链接:https://leetcode-cn.com/problems/longest-arithmetic-subsequence-of-given-difference/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给你一个整数数组 arr 和一个整数 difference,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 differen原创 2021-11-05 23:34:43 · 171 阅读 · 0 评论 -
Leecode-198. 打家劫舍——动态规划(C++)
我是小张同学,立志用更简洁的代码做更高效的表达你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 =原创 2021-09-16 14:52:03 · 138 阅读 · 0 评论 -
【千字分析】剑指 Offer 47. 礼物的最大价值
我是小张同学,立志用更简洁的代码做更高效的表达在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1: 输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物提示: 0 < grid.length原创 2021-09-15 12:01:01 · 111 阅读 · 0 评论 -
【千字分析】剑指 Offer 46. 把数字翻译成字符串
我是小张同学,立志用更简洁的代码做更高效的表达给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1: 输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”提示: 0 <= num < 231翻译 2021-09-15 10:53:04 · 99 阅读 · 0 评论 -
【最佳解法】剑指 Offer 42. 连续子数组的最大和
我是小张同学,立志用最简洁的代码做最高效的表达思路:动态规划假设nums\textit{nums}nums 数组的长度是 nnn,下标从 000 到 n−1n-1n−1。我们用 f(i)f(i)f(i)代表以第 ii 个数结尾的「连续子数组的最大和」,因此我们只需要求出每个位置的 f(i)f(i),然后返回 ff 数组中的最大值即可。那么我们如何求 f(i)f(i)f(i)呢?我们可以考虑 nums[i]\textit{nums}[i]nums[i] 单独成为一段还是加入 f(i−1)f(i-1)f原创 2021-09-12 16:58:53 · 109 阅读 · 0 评论 -
【题意分析】1044 Shopping in Mars (25 分)【滑动窗口】
立志用最少的代码做最高效的表达PAT甲级最优题解——>传送门Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diamond has a value (in Mars dollars M$). When making the payment, the chain can be cut at any position for only once and原创 2021-02-22 20:15:28 · 448 阅读 · 0 评论 -
【测试点2超时问题】1046 Shortest Distance (20 分)_21行代码AC
立志用最少的代码做最高效的表达PAT甲级最优题解——>传送门The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed to tell the shortest distance between any pair of exits.Input Specification:Each input file contains one test case.原创 2021-02-22 18:56:51 · 428 阅读 · 0 评论 -
【测试点5】1007 Maximum Subsequence Sum (25 分)
立志用最少的代码做最高效的表达Given a sequence of K integers { N1 , N2 , …, NK }. A continuous subsequence is defined to be { Ni , Ni+1 , …, Nj } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its el原创 2021-02-08 20:07:22 · 1625 阅读 · 0 评论 -
问题描述 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底
问题描述给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底的路径经过的数字和的最大值。输入输入数据的第1行是数字三角形的行数n,1≤n≤100。接下来n行是数字三角形各行中的数字。所有数字在0…99之间。输出输出数据只有一个整数,表示计算出的最大值。示例输入573 88 1 02 7 4 44 5 2 6 5示例输出30分析步骤——&.原创 2020-12-21 11:34:47 · 5833 阅读 · 0 评论 -
问题描述: 在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。 规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 试设计一个算法,计算出将n堆石子
问题描述:在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分分析要求每次合并必须是相邻的,和矩阵链乘的括号作用差不多。可以考虑往矩阵链乘最小代价的递归方程上靠。设dp[i,j]为第i堆到第j堆合并的最优解,则dp[i,j]=mindp[i,k]+dp[k+1,j]+vi+...vjdp[i,j]=min{dp[i,k]+dp[k+1,原创 2020-12-21 11:22:03 · 10453 阅读 · 1 评论 -
在一台超级计算机上,编号为1,2,…,n的n个作业等待批处理。批处理的任务就是将这n个作业分成若干批,每批包含相邻的若干作业。从时刻0开始,分批加工这些作业。在每批作业开始前,机器需要启动时间S,而完
问题描述:在一台超级计算机上,编号为1,2,…,n的n个作业等待批处理。批处理的任务就是将这n个作业分成若干批,每批包含相邻的若干作业。从时刻0开始,分批加工这些作业。在每批作业开始前,机器需要启动时间S,而完成这批作业所需的时间是单独完成批中各个作业需要时间的总和。单独完成第i个作业所需的时间是ti,所需的费用是它的完成时刻乘以一个费用系数fi。同一批作业将在同一时刻完成。例如,如果在时刻T开始一批作业x,x+1,…,x+k,则这一批作业的完成时刻均为T+S+(tx+tx+1+…+tx+k)。最优批处.原创 2020-12-21 11:15:55 · 1829 阅读 · 0 评论 -
【史上最详细】动态规划:矩阵连乘问题(C++实现,含备忘录方法)
动态规划与分治法的异同:相同点:其基本思想都是将待求解问题分解为若干子问题,先求解子问题,再结合这些子问题的解得到原问题的解。差异点:与分治法不同的是,适合用动态规划法求解的问题经分解得到的子问题往往不是相互独立的。有些问题分解后的子问题往往是重复的,此时若用分支法则会重复计算耗费时间内存。总结:为了达到避免重复计算,可以用一个表来记录所有已解决的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。步骤:找出最优解的性质,刻画其结构特征。递归地定义最优值。以自底向上转载 2020-12-06 23:01:33 · 11349 阅读 · 4 评论 -
0-1背包问题 题目:国王和金矿问题 描述:有一个国家发现了max_n座金矿,参与挖矿工人的总数是max_people人。每座金矿的黄金储量不同为一维数组gold[],需要参与挖掘的工人数也不同为一维
题目四:0-1背包问题题目:国王和金矿问题描述:有一个国家发现了max_n座金矿,参与挖矿工人的总数是max_people人。每座金矿的黄金储量不同为一维数组gold[],需要参与挖掘的工人数也不同为一维数组peopleNeed[]。每座金矿要么全挖,要么不挖,不能派出一半人挖取一半金矿。要想得到尽可能多的黄金,应该选择挖取哪几座金矿?功能: (1) 要求max_n、max_people、gold和ppeopleNeed均为可输入的; (2) 编写DP函数,求解答案F; (3) 编写mai原创 2020-11-23 09:32:32 · 1226 阅读 · 0 评论