![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
#动态规划
刷题
偶尔写博客
偶尔记录下自己的学习情况,我很菜。
展开
-
LCP 07. 传递信息
小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下: 有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0 每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)。 每轮信息必须需要传递给另一个人,且信息可重复经过同一个人给定总玩家数 n,以及按 [玩家编号,对应可传递玩家编号] 关系组成的二维数组 relation。返回信息从小 A (编号 0 ) 经过 ...原创 2022-05-27 17:54:16 · 200 阅读 · 2 评论 -
分割数组的最大值(DP)
给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件: 1 ≤ n ≤ 1000 1 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值为18,在所有情...原创 2020-07-25 23:43:06 · 277 阅读 · 0 评论 -
最小路径和(DP / dfs+记忆化)
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-path-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2020-07-23 18:32:55 · 319 阅读 · 0 评论 -
戳气球(dfs+记忆化 / DP)
有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。求所能获得硬币的最大数量。说明: 你可以假设 nums[-1] = nums[n] = 1,但注意它们...原创 2020-07-19 17:19:23 · 184 阅读 · 0 评论 -
交错字符串(DP)
给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出: true示例 2:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/interleaving-string著作原创 2020-07-18 15:07:04 · 211 阅读 · 0 评论 -
不同的二叉搜索树(动态规划)
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2...原创 2020-07-15 21:11:34 · 118 阅读 · 0 评论 -
三角形最小路径和(经典DP / dfs+记忆化)
(偷懒中……)给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分来源:力扣(Leet原创 2020-07-15 00:22:29 · 380 阅读 · 0 评论 -
恢复空格(DP)
哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符数。注意:本题相对原题稍作改动,只需返原创 2020-07-09 22:39:57 · 250 阅读 · 0 评论 -
跳水板(思维题/DP)
你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2k = 3输出: {3,4,5,6}提示: 0 < shorter <= longer 0 <= k <= 100000来源:力扣(LeetCode)链接:https://...原创 2020-07-08 23:55:35 · 185 阅读 · 0 评论 -
通配符匹配(动态规划)
给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。示例 2:输入:...原创 2020-07-05 23:53:07 · 445 阅读 · 0 评论 -
最长重复子数组(暴力/动态规划/滑窗法)
给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例 1:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出: 3解释:长度最长的公共子数组是 [3, 2, 1]。说明: 1 <= len(A), len(B) <= 1000 0 <= A[i], B[i] < 100来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-lengt...原创 2020-07-01 16:14:19 · 185 阅读 · 0 评论 -
受限的组合(完全背包/动规)
描述给定几个较小的数字和一个大数字,要求出这个大数字能否由这几个较小的数字组合而成,较小的数字可以重复使用,也可以不使用。如果可以组合,要输出有多少种组合方案;如果不能组合而成,输出0。比如给定数字{1,3,5}和数字7,7可以由(1,3,3)(1,1,5)(1,1,1,1,3)和(1,1,1,1,1,1,1)组合而成,一共有4种组合方案。注意(1,3,3)和(3,3,1)是同一种方案。再...原创 2020-05-12 16:00:29 · 367 阅读 · 1 评论 -
高山速降比赛(dp最长递减子序列)
描述滑雪场举行了一场高山速降比赛,起点高度1000米,终点高度为0,举办者在中途设置了若干多个高度不同的落脚点,规定所有选手只能从起点到终点单向运动,每到达一个落脚点可以获得一个积分奖励,但是后一个得分落脚点的高度必须低于他前面得过分的落脚点,请你帮选手选择一条路线,使得他可以获得最多的积分奖励。例如有以下数据:1000 614 971 509 838 743 968 0表示一共有8个落...原创 2020-05-04 22:31:05 · 430 阅读 · 0 评论 -
混合背包(贪心WA / 动规AC)
描述一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。格式输入格式第一行:二个整数,M(背包容量,M≤2...原创 2020-04-10 13:16:14 · 223 阅读 · 0 评论 -
踩方格(动规递推)
描述有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:a、每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b、走过的格子立即塌陷无法再走第二次;c、只能向北、东、西三个方向走;请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。格式输入格式允许在方格上行走的步数n(n≤20)。输出格式计算出的方...原创 2020-04-03 16:02:01 · 1204 阅读 · 1 评论 -
移动路线(动规递推)
描述X桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。小明把这只蚂蚁放在左下角的方格中,蚂蚁从左下角的方格中移动到右上角的方格中,每步移动一个方格。蚂蚁始终在方格矩阵内移动,请计算出...原创 2020-03-30 15:31:25 · 1371 阅读 · 0 评论 -
过河卒(深搜/动规)
描述棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1中的C点和P1,……,P8,卒不能通过对方马的控制点。棋盘用坐标表示,A点(0,0)、B点(n, m) (n,m为不超过20的整数),同样马的位置坐标是需要给出的,C≠A且C≠B。现在要求你计算出卒从A点能...原创 2020-03-28 16:01:00 · 771 阅读 · 0 评论 -
网易笔试题 合唱
/**牛客提交和讨论地址:https://www.nowcoder.com/questionTerminal/fddf64d5757e41ec93f3ef0c0a10b891*序列动态规划问题,牛客讨论地址中有很多解题思路。*代码和解题参考博客:https://blog.csdn.net/u012822181/article/details/79627003*牛客讨论高亮buaaqlyj...原创 2018-08-15 22:09:15 · 212 阅读 · 0 评论 -
京东笔试题 神奇数
/**没搞懂为什么牛客判定我的这段代码在测试数据为1 50时,输出了8,*而我在devc++、CB上跑,一直输出4.*思路:例如44321这个数,在数组a[]中有1 2 3 4 4。如果这个数是神奇数,*那么数组中的所有数相加后得sum,sum%2一定为0。然后我们要确定44321是否*可以分为符合题意的两组,这里用到了递归。*/#include <bits/stdc++.h...原创 2018-08-03 20:46:41 · 260 阅读 · 0 评论 -
腾讯笔试题 小Q的歌单
/*组合数学解法*(1)杨辉三角中的值对应于其所在位置的组合数,例如C[4][2],表示从4个里面选2个,等于6*(2)当满足i首长度为A的歌小于总长度K,且满足K减去i乘以A后对长度为B的歌取模的值为0,且满*足K减去i乘以A后整除B小于等于Y后,即(i*A<=K) && (K-i*A)%B==0 && ((K-i*A)/B)<=Y*进行组合...原创 2018-07-28 10:30:31 · 577 阅读 · 1 评论