重生之我要当分子
重生之我要当分子
全部文章
分类
题解(3)
归档
标签
去牛客网
登录
/
注册
重生之我要当分子的博客
全部文章
(共295篇)
题解 | 分割等和子集
解题思路 这是一个01背包问题的变体: 问题分析: 目标:找到一些数,使其和等于剩余数之和 等价于:找到一些数,使其和等于总和的一半 因为:如果一部分和为 ,那么剩余部分也为 解题步骤: 先求出数组总和 如果 是奇数,直接返回 false 问题转化为:能否从数组中选择一些数,使其...
2024-12-23
0
14
题解 | 兑换零钱
解题思路 问题分析: 每种面值的货币可以使用任意张(完全背包特征) 目标是找到组成 的最少货币数 无法组成时返回 -1 动态规划设计: 状态定义: 表示组成金额 所需的最少货币数 初始化:,其他为无穷大 状态转移: 其中 是当前面值 优化: 使用一维 数组(滚动数组) ...
2024-12-23
0
13
题解 | 最少的完全平方数
解题思路 这是一个完全背包问题的变体: 问题分析: 目标:找到最少个数的完全平方数,使其和为 每个完全平方数可以重复使用 需要找到所有小于等于 的完全平方数 动态规划设计: 状态定义: 表示和为 的最少完全平方数个数 初始化:,其他为无穷大 状态转移: 其中 是小于等于 的完...
2024-12-23
0
18
题解 | 【模板】完全背包
解题思路 这是一个完全背包问题的变体,需要解决两个子问题: 问题分析: 第一问:求背包能装下的最大价值(不要求装满) 第二问:求背包恰好装满时的最大价值(要求装满) 每种物品可以使用无限次 状态定义: :容量为j时能装下的最大价值(不要求装满) :容量为j时恰好装满的最大价值(要求装满...
2024-12-23
0
17
题解 | 【模板】01背包
解题思路 问题分析: 第一问:求背包能装下的最大价值(不要求装满) 第二问:求背包恰好装满时的最大价值(要求装满) 状态定义: :容量为 时能装下的最大价值(不要求装满) :容量为 时恰好装满的最大价值(要求装满) 初始化: 全部初始化为 (表示空背包,价值为 ) 除了...
2024-12-23
0
18
题解 | [NOIP2001]装箱问题
解题思路 这是一个 背包问题: 状态定义: 表示是否可以装到体积 最终答案是V减去最大可装体积 状态转移: 其中 是第 个物品的体积 边界条件: 其他初始化为 最终结果: 找到最大的可装体积 返回 代码 c++ java pyth...
2024-12-23
0
17
题解 | [NOIP2002 普及组] 过河卒
解题思路 这是一个动态规划问题,需要考虑马的控制点: 首先计算出马的所有控制点: 马的位置 所有满足 且 的点 定义 表示从 到 的路径数 状态转移方程: 如果 不是马的控制点: 如果 是马的控制点: 边界条件:(如果起点不是马的控制点) 代码 c++ ja...
2024-12-23
0
19
题解 | 正则表达式匹配
解题思路 这是一个动态规划问题,需要考虑多种匹配情况: 定义 表示 的前 个字符和 的前 个字符是否匹配 对于 的不同情况: 如果是普通字符:需要 如果是'.':可以匹配任意字符 如果是'*':可以匹配0次或多次前面的字符 对于'*'的情况需要考虑: 匹配 次: 匹配多次:...
2024-12-23
0
36
题解 | 有多少个不同的二叉搜索树
解题思路 定义 表示 个节点能构成的不同二叉搜索树的数量 对于每个节点数 : 可以选择 到 中的任何一个数作为根节点 左子树由小于根节点的数构成 右子树由大于根节点的数构成 状态转移方程: , 从 到 其中 是左子树节点数, 是右子树节点数 边界条件: 代码 c+...
2024-12-23
0
16
题解 | 乘积为正数的最长连续子数组
解题思路 这是一个动态规划问题,需要同时维护正积和负积的长度: 使用两个变量: :以当前位置结尾的最长正积子数组长度 :以当前位置结尾的最长负积子数组长度 对于每个新的数字 ,根据其正负性: 如果 : 加 , 如果存在则加 如果 :新 (如果 存在),新 如果 :重置 和 为 ...
2024-12-23
0
24
首页
上一页
19
20
21
22
23
24
25
26
27
28
下一页
末页