- 博客(41)
- 收藏
- 关注
原创 深入剖析字节跳动近几年笔试算法题
例如,在一些复杂的动态规划问题中,状态定义和状态转移方程的推导较为困难,需要应聘者对问题进行细致的分析和抽象。还有一些与实际场景结合紧密的题目,如字节电商货物装载问题,给定多个包裹的重量与运费,选择总重不超过一定限制且运费最大的组合,这不仅考查算法知识,还要求应聘者能够将实际问题转化为数学模型,并运用合适的算法求解。例如,在旅行者穿越沙漠的补给次数问题中,旅行者在穿越沙漠时需在绿洲补给站补充水分,每个补给站有距离起点的位置和可提供的水量,题目要求用最少的补给次数到达终点。刷题是提高算法能力的有效方法。
2025-06-09 13:04:47
713
原创 深入剖析字节跳动近几年笔试算法题9
例如,在一些复杂的动态规划问题中,状态定义和状态转移方程的推导较为困难,需要应聘者对问题进行细致的分析和抽象。还有一些与实际场景结合紧密的题目,如字节电商货物装载问题,给定多个包裹的重量与运费,选择总重不超过一定限制且运费最大的组合,这不仅考查算法知识,还要求应聘者能够将实际问题转化为数学模型,并运用合适的算法求解。例如,在旅行者穿越沙漠的补给次数问题中,旅行者在穿越沙漠时需在绿洲补给站补充水分,每个补给站有距离起点的位置和可提供的水量,题目要求用最少的补给次数到达终点。刷题是提高算法能力的有效方法。
2025-06-09 13:04:07
365
原创 深入剖析字节跳动近几年笔试算法题8
例如,在一些复杂的动态规划问题中,状态定义和状态转移方程的推导较为困难,需要应聘者对问题进行细致的分析和抽象。还有一些与实际场景结合紧密的题目,如字节电商货物装载问题,给定多个包裹的重量与运费,选择总重不超过一定限制且运费最大的组合,这不仅考查算法知识,还要求应聘者能够将实际问题转化为数学模型,并运用合适的算法求解。例如,在旅行者穿越沙漠的补给次数问题中,旅行者在穿越沙漠时需在绿洲补给站补充水分,每个补给站有距离起点的位置和可提供的水量,题目要求用最少的补给次数到达终点。刷题是提高算法能力的有效方法。
2025-06-09 13:03:37
412
原创 深入剖析字节跳动近几年笔试算法题7
例如,在一些复杂的动态规划问题中,状态定义和状态转移方程的推导较为困难,需要应聘者对问题进行细致的分析和抽象。还有一些与实际场景结合紧密的题目,如字节电商货物装载问题,给定多个包裹的重量与运费,选择总重不超过一定限制且运费最大的组合,这不仅考查算法知识,还要求应聘者能够将实际问题转化为数学模型,并运用合适的算法求解。例如,在旅行者穿越沙漠的补给次数问题中,旅行者在穿越沙漠时需在绿洲补给站补充水分,每个补给站有距离起点的位置和可提供的水量,题目要求用最少的补给次数到达终点。刷题是提高算法能力的有效方法。
2025-06-09 13:03:06
376
原创 深入剖析字节跳动近几年笔试算法题6
例如,在一些复杂的动态规划问题中,状态定义和状态转移方程的推导较为困难,需要应聘者对问题进行细致的分析和抽象。还有一些与实际场景结合紧密的题目,如字节电商货物装载问题,给定多个包裹的重量与运费,选择总重不超过一定限制且运费最大的组合,这不仅考查算法知识,还要求应聘者能够将实际问题转化为数学模型,并运用合适的算法求解。例如,在旅行者穿越沙漠的补给次数问题中,旅行者在穿越沙漠时需在绿洲补给站补充水分,每个补给站有距离起点的位置和可提供的水量,题目要求用最少的补给次数到达终点。刷题是提高算法能力的有效方法。
2025-06-09 13:02:31
373
原创 深入剖析字节跳动近几年笔试算法题5
例如,在一些复杂的动态规划问题中,状态定义和状态转移方程的推导较为困难,需要应聘者对问题进行细致的分析和抽象。还有一些与实际场景结合紧密的题目,如字节电商货物装载问题,给定多个包裹的重量与运费,选择总重不超过一定限制且运费最大的组合,这不仅考查算法知识,还要求应聘者能够将实际问题转化为数学模型,并运用合适的算法求解。例如,在旅行者穿越沙漠的补给次数问题中,旅行者在穿越沙漠时需在绿洲补给站补充水分,每个补给站有距离起点的位置和可提供的水量,题目要求用最少的补给次数到达终点。刷题是提高算法能力的有效方法。
2025-06-09 12:59:56
706
原创 深入剖析字节跳动近几年笔试算法题4
例如,在一些复杂的动态规划问题中,状态定义和状态转移方程的推导较为困难,需要应聘者对问题进行细致的分析和抽象。还有一些与实际场景结合紧密的题目,如字节电商货物装载问题,给定多个包裹的重量与运费,选择总重不超过一定限制且运费最大的组合,这不仅考查算法知识,还要求应聘者能够将实际问题转化为数学模型,并运用合适的算法求解。例如,在旅行者穿越沙漠的补给次数问题中,旅行者在穿越沙漠时需在绿洲补给站补充水分,每个补给站有距离起点的位置和可提供的水量,题目要求用最少的补给次数到达终点。刷题是提高算法能力的有效方法。
2025-06-09 12:59:24
306
原创 深入剖析字节跳动近几年笔试算法题3
例如,在一些复杂的动态规划问题中,状态定义和状态转移方程的推导较为困难,需要应聘者对问题进行细致的分析和抽象。还有一些与实际场景结合紧密的题目,如字节电商货物装载问题,给定多个包裹的重量与运费,选择总重不超过一定限制且运费最大的组合,这不仅考查算法知识,还要求应聘者能够将实际问题转化为数学模型,并运用合适的算法求解。例如,在旅行者穿越沙漠的补给次数问题中,旅行者在穿越沙漠时需在绿洲补给站补充水分,每个补给站有距离起点的位置和可提供的水量,题目要求用最少的补给次数到达终点。刷题是提高算法能力的有效方法。
2025-06-09 12:58:30
407
原创 深入剖析字节跳动近几年笔试算法题2
例如,在一些复杂的动态规划问题中,状态定义和状态转移方程的推导较为困难,需要应聘者对问题进行细致的分析和抽象。还有一些与实际场景结合紧密的题目,如字节电商货物装载问题,给定多个包裹的重量与运费,选择总重不超过一定限制且运费最大的组合,这不仅考查算法知识,还要求应聘者能够将实际问题转化为数学模型,并运用合适的算法求解。例如,在旅行者穿越沙漠的补给次数问题中,旅行者在穿越沙漠时需在绿洲补给站补充水分,每个补给站有距离起点的位置和可提供的水量,题目要求用最少的补给次数到达终点。刷题是提高算法能力的有效方法。
2025-06-09 12:57:57
285
原创 深入剖析字节跳动近几年笔试算法题1
在科技行业飞速发展的当下,字节跳动作为全球知名的互联网企业,其招聘标准备受关注。对于技术岗位而言,笔试算法题是筛选人才的关键环节,不仅能考察应聘者的数据结构与算法知识,还能检验其逻辑思维、问题解决能力以及代码实现水平。接下来,让我们一同深入分析字节跳动近几年的笔试算法题。一、题型与知识点分布(一)数据结构相关1. 数组与链表:数组相关题目常涉及元素查找、排序以及子数组问题。例如,给定一个整数数组,找出和为特定值的两个元素的索引,这类题目考查对数组遍历和哈希表辅助查找的运用 。链表题目则侧重于链表的基本操作,
2025-06-09 12:57:24
286
原创 动态规划算法的应用深度剖析15
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:29:54
655
原创 动态规划算法的应用深度剖析14
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:29:17
1372
原创 动态规划算法的应用深度剖析13
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:28:46
665
原创 动态规划算法的应用深度剖析12
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:28:13
1405
原创 动态规划算法的应用深度剖析11
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:27:42
612
原创 动态规划算法的应用深度剖析10
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:27:12
551
原创 动态规划算法的应用深度剖析9
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:26:03
622
原创 动态规划算法的应用深度剖析8
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:25:32
713
原创 动态规划算法的应用深度剖析7
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:25:02
531
原创 动态规划算法的应用深度剖析6
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:24:31
589
原创 动态规划算法的应用深度剖析5
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:23:59
491
原创 动态规划算法的应用深度剖析4
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:23:15
1190
原创 动态规划算法的应用深度剖析3
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:22:44
555
原创 动态规划算法的应用深度剖析2
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:22:13
486
原创 动态规划算法的应用深度剖析1
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])(当w[i] ≤ j时,比较放入和不放入该物品的价值,取较大值)。状态定义与0 - 1背包类似,但状态转移方程有所不同,为dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i]),这里dp[i][j - w[i]]表示放入第i个物品后剩余容量j - w[i]的最大价值,因为物品可重复放入,所以是dp[i]而非dp[i - 1]。
2025-06-06 10:21:43
538
原创 动态规划算法进阶:有代价的最短路径问题研究
传统最短路径问题(如Dijkstra算法)假设边权为固定值,而有代价的最短路径问题引入动态代价——边权可能随状态(如访问次数、时间窗口)变化。◦ 若到达节点u的代价c1大于同节点的另一代价c2(c1≥c2),则状态dp[u][c1]可丢弃。设dp[i][c]表示到达节点i时已消耗代价c的最短路径长度,其中c为代价维度(如时间、电量)。dp[j][c+w] = min(dp[j][c+w], dp[i][c] + 边权)◦ 初始状态dp[src][0] = 0,其余dp[i][c] = +∞。
2025-06-05 17:55:13
375
原创 动态规划之状态压缩:瓷砖覆盖问题深度探讨
◦ 对于i>1,遍历所有合法状态s1(第i-1行)和s2(第i行),若s1 & s2 == 0(无重叠)且s1 | s2全1(填满两行),则dp[i][s2] += dp[i-1][s1]。1. 状态表示:用二进制数表示一行的覆盖状态,1表示该位置被覆盖,0表示未覆盖。1. 状态定义:dp[i][s]表示前i行用状态s覆盖第i行的方案数,n为列数。◦ 当i=1时,合法状态s只能是全1(11...1),dp[1][s]=1。◦ 例如,m=3时,状态101表示第1、3列被覆盖,第2列未覆盖。
2025-06-05 17:54:40
282
原创 用动态规划解决实际问题:工作量划分案例分析
min(dp[i-1][j-1], prefix_sum[i]) # 分配给前j-1人中的某一位。◦ 任务需在指定时间段内完成,状态扩展为dp[i][j][t]表示前i项分配给j人且当前时间为t的最小工作量。max(dp[i-1][j], tasks[i-1]), # 分配给第j人。dp[i][j] = min(max(dp[i-1][j], sum_{前i项分配给k的任务耗时}))设dp[i][j]表示前i项任务分配给j名员工时的最小最大工作量,同时记录每项任务的分配归属。
2025-06-05 17:54:09
556
原创 动态规划新思路:三路取苹果问题的创新解法
在传统取苹果问题基础上拓展:三维网格中,从起点(0,0,0)到终点(n-1,n-1,n-1),每次可沿x/y/z轴正方向移动一格,路径上的苹果可收集。1. 状态抽象:设dp[x][y][z]表示到达(x,y,z)时收集的最大苹果数,其中x+y+z = k(k为步数)。扩展至四维空间(x,y,z,w),状态定义为dp[x][y][z][w],转移时考虑四个方向,复杂度呈指数增长。利用x+y+z=k的特性,用三维数组dp[k][x][y]替代四维状态,其中z = k - x - y。
2025-06-05 17:53:38
433
原创 《网络诊断中数据预处理技术对故障识别准确率的影响研究》
网络诊断依赖流量、日志等数据的质量,但实际场景中数据常存在噪声(如采样误差)、缺失(如设备故障导致日志丢失)、不一致(如跨设备时间戳偏差)等问题。◦ 跨层数据关联:结合网络层元数据(如TLS握手时间、包间隔)弥补载荷缺失,提升加密流量预处理质量(如SSL流量的异常识别率从65%升至79%)。◦ 数据增强对稀有故障(如Botnet攻击,样本占比<5%)的识别率提升最明显(从68%升至89%)。│ (自动识别数据质量)│────►│ (根据场景调用策略)│────►│ (准确率反哺策略优化)│。
2025-06-05 17:50:58
351
原创 《量子通信网络的链路诊断方法及安全性能优化》
量子通信凭借量子密钥分发(QKD)技术实现理论上无条件安全的信息传输,但链路中的光子损耗(如光纤弯曲导致衰减>0.5dB/km)、偏振模色散(PMD)、背景光干扰等问题,会导致量子比特误码率(QBER)升高,甚至破坏密钥分发的安全性。传统经典网络诊断方法无法适应量子链路的量子态特性(如不可克隆原理限制直接测量),亟需构建基于量子物理特性的链路诊断体系,解决量子通信网络的实时故障检测与安全性能保障问题。│ (密钥安全评估)│────►│ (QBER分析+偏振校准)│────►│ (单光子探测器+偏振仪)│。
2025-06-05 17:50:21
425
原创 《车联网动态拓扑下的网络实时诊断协议设计》
车联网(V2X)中车辆高速移动(时速>120km/h)与节点动态加入/离开,导致网络拓扑秒级变化(如密集车流中节点平均连接时长<5s),传统固定拓扑诊断协议(如ICMP)因握手时延高(>100ms)、拓扑更新滞后,无法适应“低时延、高可靠”的诊断需求(如自动驾驶要求故障诊断时延<5ms)。在5.9GHz频段(5725-5850MHz)划分10个跳频信道,诊断帧按“伪随机+速度关联”跳频(如车速>80km/h时,跳频间隔从10ms缩短至5ms),抵抗同频干扰(如 roadside unit的信号冲突)。
2025-06-05 17:49:51
315
原创 《网络诊断技术在智慧医疗中的应用:架构、挑战与解决方案》
智慧医疗依赖远程手术、实时心电监测等高可靠性网络业务(如远程手术要求时延<20ms、丢包率<0.01%),但医疗场景存在电磁干扰(如MRI设备对Wi-Fi的干扰)、移动医护终端频繁切换(如护士站到病房的AP漫游)等特殊挑战。传统网络诊断技术难以满足“诊断误报可能引发医疗事故”的高安全性要求,亟需构建符合医疗行业标准(如HIPAA、ISO 13485)的诊断体系,解决医疗业务连续性与数据安全的双重需求。◦ 边缘诊断节点:在每个病房部署轻量化诊断盒(尺寸10cm×10cm),通过USB接口直连医疗设备;
2025-06-05 17:49:17
348
原创 《深度学习驱动的网络流量异常诊断模型:泛化能力与鲁棒性优化》
深度学习在网络流量异常诊断中展现出高准确率(如对DDoS攻击识别率超95%),但实际部署面临“泛化能力弱”(如训练集与测试集流量分布差异导致误报率飙升)和“鲁棒性不足”(如对抗样本攻击可使模型准确率下降40%)等问题。主动生成对抗样本(如在正常流量中添加精心设计的扰动),训练模型抵抗白盒攻击(如FGSM),使对抗样本误判率从90%降至35%。│ (改进ResNet) │────►│ (领域自适应) │────►│ (对抗训练+不确定性估计)│。3. 小样本场景(100条新型攻击样本)的诊断能力。
2025-06-05 17:48:14
348
原创 动态规划在字符串处理中的应用:字符串相似度分析
◦ 若A[i-1] == B[j-1],则dp[i][j] = dp[i-1][j-1](无需操作);4. 初始化:dp[i][0]=i(删除i个字符),dp[0][j]=j(插入j个字符)。A="kitten",B="sitting",编辑距离为3(替换k→s,删除e,插入i)。2. 状态矩阵构建:设dp[i][j]表示A前i个字符与B前j个字符的编辑距离。dp[i-1][j-1] # 替换A[i-1]为B[j-1]◦ 状态dp[i][j]表示A前i个字符与B前j个字符的公共子串数。
2025-06-05 13:36:16
431
原创 动态规划技巧揭秘:矩阵链乘法问题求解思路
例如,矩阵维度3×100、100×2、2×200,按(A₁A₂)A₃需3×100×2 + 3×2×200=1800次运算,而A₁(A₂A₃)需100×2×200 + 3×100×200=80000次运算。给定n个矩阵构成的链[A₁, A₂, ..., Aₙ],其中Aᵢ的维度为pᵢ₋₁×pᵢ,求计算矩阵链乘积A₁A₂...Aₙ的最小乘法运算次数。当dp[i][k] + dp[k+1][j] + pᵢ₋₁×pₖ×pⱼ为当前最小值时,更新split[i][j] = k。三、优化策略:记录最优分割点。
2025-06-05 13:35:43
566
原创 动态规划常见题型:最大子序列积问题分析
◦ min_dp[i] = min(nums[i], min_dp[i - 1] * nums[i]) ,同理,要么以nums[i]单独作为一个子序列,要么将nums[i]加入到以nums[i - 1]结尾的最小子序列中。◦ max_dp[i] = max(nums[i], max_dp[i - 1] * nums[i]) ,即要么以nums[i]单独作为一个子序列,要么将nums[i]加入到以nums[i - 1]结尾的最大子序列中。• max_dp[i]表示以nums[i]结尾的最大子序列乘积。
2025-06-05 13:35:00
383
原创 深入理解动态规划:医疗队分配问题的解法思路
◦ 分配到第j个地区,此时dp[i][j] = dp[i - 1][j - 1] + effect[i][j] ,其中effect[i][j]表示第i支医疗队分配到第j个地区产生的救援效果,dp[i - 1][j - 1]表示将前i - 1支医疗队分配到前j - 1个地区的最大效果。不过,通过滚动数组优化,可以将空间复杂度降低到O(m) ,因为dp[i][j]的值只依赖于dp[i - 1][j - 1]和dp[i][j - 1]。• 当j = 0时,即没有地区需要分配医疗队,dp[i][0] = 0。
2025-06-05 13:34:28
465
原创 动态规划实战:计算K站中转内最便宜的航班
◦ 遍历所有航线(j→i, price),更新curr_dp[i] = min(curr_dp[i], prev_dp[j] + price);若无法到达则返回-1。◦ k=1时,dp[1][2] = min(dp[0][0]+500, dp[0][1]+100) = 200。1. 带价格上限的中转问题:增加状态dp[k][i][p]表示k次中转到i且价格≤p的可行性,用布尔值存储。◦ 初始条件:dp[0][src] = 0(0次中转到达起点价格为0),其余dp[0][i] = +∞;
2025-06-05 13:31:19
505
原创 动态规划核心思路:最长回文子序列求解方法
不过,通过观察可以发现,dp[i][j]的值只依赖于dp[i + 1][j - 1]、dp[i][j - 1]和dp[i + 1][j] ,所以可以使用滚动数组优化,将空间复杂度降低到O(n)。= s[j]时:此时,最长回文子序列要么在从i到j-1的子串中,要么在从i+1到j的子串中,所以dp[i][j] = max(dp[i][j - 1], dp[i + 1][j])。对于最长回文子序列问题,我们定义一个二维数组dp,其中dp[i][j]表示字符串s中从索引i到索引j的子串的最长回文子序列长度。
2025-06-05 13:30:40
508
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅