公元 2242 年,您是星际勘探舰“奥德赛号”的舰长,正在执行一项穿越未知小行星带的危险任务。 远程扫描显示,前方有一条由 m 颗小行星组成的直线路径,每一颗都蕴藏着宝贵的能量水晶。 您的任务是规划航线,最大限度地补充舰船的能量储备。 您将要穿越的星系包含 m 颗小行星,编号从 1 到 m 。您的舰船只能沿着编号递增的方向前进,无法后退。 初始状态 : 您的舰船携带有 n 个单位的初始能量。 航行消耗 : 从当前位置航行到下一颗小行星,需要消耗 1 个单位的能量。如果能量为 0 ,舰船将无法启动,无法航行到新的小行星。 能量采集 : 您装备了一台高能水晶采集器,但由于能源核心的限制,在整个任务中最多只能使用 k 次。每颗小行星最多只能被采集一次。采集小行星 i 上的水晶,可以为舰船瞬间补充 a_i 个单位的能量。 您的目标是,在整个勘探任务的任意时刻,舰船所能达到的**最大能量值**是多少? 请注意,您可以选择不登陆任何小行星。
第一行包含三个正整数 m, n, k ( 1 ≤ m, n, k ≤ 20 ),由空格隔开。 第二行包含 m 个整数 a_1, a_2, ..., a_m ( 0 ≤ a_i ≤ 20 ),代表每颗小行星上蕴含的能量水晶数量,由空格隔开。
一个整数,表示在整个任务过程中,舰船能达到的最大能量值。
17 20 19 19 0 2 6 20 3 4 1 8 3 8 7 14 8 19 11 17
153
考点:动态规划
数据规模 n ≤ 20 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:动态规划
本题切入点
dp[i][j] = 到达第 i 颗小行星、已用 j 次采集时的最大能量,逐颗转移(采集/不采集);m,n,k≤20 规模极小,也可用记忆化搜索。
把问题拆成子问题,用状态表示「已处理到哪儿」,靠转移方程递推。
思路框架(动态规划 通法 · 非本题专属)
实现要点:一般是「先枚举阶段,再枚举状态,最后枚举决策」三层循环;空间大时可滚动数组优化。
复杂度:时间 O(状态数 × 转移代价) | 空间 O(状态数)
该范式的通法易错点
对照本题
样例 1
17 20 19 / 19 0 2 6 20 3 4 1 8 3 8 7 14 8 19 11 17153解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-10月23号留学生开发岗。