当前位置: 首页 > news >正文

DP数组的容量要不要+1?

其实,dp数组要不要+1,完全取决于“DP数组”下标代表什么

简单来说,只有两种情况。我们结合“凑钱”题和经典的“爬楼梯”题来对比一下。


📏 情况一:下标代表“金额/重量/容量”(需要 +1)

场景:背包问题、凑零钱、分割等和子集。
例子:你的目标是凑出11块钱。

为什么要 +1?
因为钱是可以为 0 的
你的记账本不仅要记录“能不能凑出 11 块”,还要记录“能不能凑出 0 块”、“能不能凑出 1 块”……一直到“能不能凑出 11 块”。

  • 如果你写new int[11]
    • 下标范围是010
    • 最大只能记到 10 块,11 块那个格子根本不存在(越界了)!
  • 如果你写new int[11 + 1]
    • 下标范围是011
    • 正好能记下目标金额 11。

结论:只要你的下标i代表的是**“具体的数值大小”(比如金额、背包重量、台阶数),而且这个数值包含 0**,你就必须+1,因为0也要占一个格子。


🍞 情况二:下标代表“第几个物品/第几步”(通常不用 +1,或者视定义而定)

场景:爬楼梯、打家劫舍、最长递增子序列。
例子:给你 5 个数字[1, 5, 11, 5, 2],问最长序列是多少。

为什么不用 +1?
因为这里的下标i只是用来遍历数组的。

  • 数组本身长度是 5。
  • 我们定义dp[i]为“以第 i 个数字结尾的最长序列”。
  • 我们只需要算到dp[4](也就是最后一个数字 2)就结束了。
  • 此时dp数组的大小只要和原数组一样大(5)就够了,不需要去记录“第 5 个数字”(因为根本不存在)。

特殊情况(为了偷懒):
有些人在写“爬楼梯”或者“背包二维数组”时,喜欢故意把数组开大一点(n+1),是为了处理边界更方便

  • 比如爬楼梯,如果开n+1,你可以直接从dp[1]开始算,不用管dp[0]是不是越界。
  • 但这属于“为了代码写得爽”,而不是逻辑上的必须。

⚖️ 一张表总结

你的 dp 定义目标值数组大小原因
dp[i] = 能否凑出金额 i1111 + 1因为你要记录 0, 1, …, 11。0 也要占个座!
dp[i] = 容量为 i 的背包最大价值10kg10 + 1同上,容量为 0 也是一种状态。
dp[i] = 前 i 个物品的最优解5个物品5你只需要算到第 5 个(下标 4)。不需要“第 5 个”这个位置。
dp[i] = 跳到第 i 级台阶的方法10级10你只需要算到第 10 级(下标 9)。

💡 终极判断口诀

当你拿不准要不要+1时,问自己一个问题:

“我的目标值(比如 11),需不需要作为一个下标存进数组里?”

  • 需要(比如凑钱题,我要查dp[11]):必须 +1
  • 不需要(比如数组题,我只需要算到dp[n-1]):不用 +1

在刚才的“分割等和子集”里,我们的目标是凑出target,最后要返回dp[target],所以必须 +1,否则dp[target]就报错了!

http://www.jsqmd.com/news/569975/

相关文章:

  • Labelme标注神器:从安装到实战,手把手教你打造自己的图像分割数据集
  • 2026年质量好的铝合金钢瓶检测设备/焊接钢瓶检测设备实力工厂推荐 - 行业平台推荐
  • Android - 告别findViewById:ViewBinding实战与迁移指南
  • 手把手教你修复OracleOraDb11g_home1TNSListener服务(从注册表到环境变量全流程)
  • 如何选择北京全屋定制品牌?2026年3月推荐评测口碑对比顶尖五家 - 品牌推荐
  • MCP工具数据爆炸?LangGraph的消息修剪方案帮你轻松应对
  • Win11Debloat系统优化工具:全面提升Windows性能的技术指南
  • 共话2026年瓷砖胶批量定制,费用情况怎么收费 - 工业品牌热点
  • 阿香米线我点了不下十次,三款口味和薅羊毛心得分享 - 速递信息
  • AMD显卡驱动安装避坑指南:deepin系统下R7 6800H的完整配置流程
  • Windows触控板三指拖动终极方案:告别跨平台操作割裂感
  • 2026年热门的丙烷氢瓶检测设备/焊接氢瓶检测设备厂家实力哪家强 - 行业平台推荐
  • 告别手动点击!Windows计划任务+bat文件实现每日自动备份的保姆级教程
  • LaTeX表格注释全攻略:threeparttable宏包使用详解(附IEEE模板适配技巧)
  • 2026年GEO服务商怎么选?从技术到实效,优质服务商精选 - 品牌2025
  • 别再到处找免费TTS了!手把手教你用微软Azure的免费语音服务(附Python调用代码)
  • 万象视界灵坛实操手册:上传JPG/PNG→输入神谕→获取语义契合度饼图全流程
  • 保姆级教程:在Ubuntu服务器上用Docker Compose搞定Dify+Ollama+DeepSeek(附权限与端口映射避坑指南)
  • 2026年四川婚纱照店铺,浪漫海景打造梦幻婚纱摄影 - 品牌推荐师
  • 2025-2026年北京全屋定制品牌评测:五款口碑产品推荐评价领先 - 品牌推荐
  • 2026年好用的瓷砖胶专业厂家有哪些,讲讲山东靠谱的瓷砖胶厂商 - 工业推荐榜
  • OFA-VE实战指南:3步完成图像-文本逻辑验证(YES/NO/MAYBE)
  • SingleFile终极指南:一键保存完整网页的神奇工具
  • Vivado2020.2工程优化与高效管理实践
  • 3个高效方法,用Video-subtitle-extractor提取视频硬字幕解决字幕制作难题
  • 2026年评价高的螺旋风管加工/防火风管加工/风管加工/湖南风管加工优质供应商推荐 - 行业平台推荐
  • 2026年最新护眼台灯推荐:为儿童打造健康居家用光环境 - 速递信息
  • 2026年山东真石漆服务商排名,专业靠谱的真石漆供应商推荐 - mypinpai
  • OpenCore-Configurator完全指南:从黑苹果配置痛点到系统优化的创新方法
  • gte-base-zh Embedding服务性能测试:QPS/延迟/显存占用三维度实测报告