GESP 六级 · GESP 202512 C++ 六级 第 24 题

判断题 · 答案 B · 考点:递推

← 整套速查表 GESP 六级 全部真题

题目

小杨在玩一个闯关游戏,从第 $1$ 关走到第 $4$ 关。每一关的体力消耗如下(下标表示关卡编号):cost = [0, 3, 5, 2, 4]。其中 cost[i] 表示到达第 i 关需要消耗的体力,cost[0]=0 表示在开始状态,体力消耗为 $0$。小杨每次可以从当前关卡前进 $1$ 步或 $2$ 步。按照上述规则,从第 $1$ 关到第 $4$ 关所需消耗的最小体力为 $7$。

答案:B

考点

递推

解题思维

仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。

常见错误

审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。

详细解析(节选)

【考点】递推(DP)

本题本质是“最小体力路径”的动态规划:设 dp[i] 为到达第 i 关的最小体力,则 dp[i]=cost[i]+min(dp[i‑1],dp[i‑2]),边界 dp[1]=3,dp[2]=5,dp[0] 仅表示起点体力为 0 但不参与计算。逐层递推:dp[3]=2+min(5,3)=5,dp[4]=4+min(5,5)=9,故“最小体力为 7”这一绝对化断言与 DP 结果矛盾,直接判定错误。

选项 A 的陷阱在于:考生往往只关注“能否走通”而忽略 DP 的递推结构,误把“1 或 2 步”理解为贪心选小步,导致错误地认为 3+5+2+4=14 再减 7 等于 7;更隐蔽的是,cost[0]=0 是初始状态,与目标无关,命题人故意把它放在数组首位,诱导人把 0 计入路径,从而算错。若只背结论、不写递推式,就会掉进“数字凑巧”的坑。贪心策略之所以失效,是因为每一步的局部最优(选小步)并不保证全局最优(总体力最小),这正是 DP 存在的意义。

反命题角度:若把步长规则改成“只能走 1 步”,答案就是 cost[1]+cost[2]+cost[3]+cost[4]=14,原命题仍错;若把 cost[3]改成 0,则 dp[4]=4+min(0,5)=4,原命题会变真。这说明本题的核心不是某个固定数字,而是 DP 递推过程。即使数组长度或 cost 值变化,递推关系依然适用,命题人正是通过这种“绝对数字”来测试你是否真正掌握了 DP 思想。

刷到类似题时,先问自己“命题人想考我什么”,是贪心还是递推?关键看是否出现“最小/最大”与“绝对数字”的组合,一旦出现,立刻启动 DP 思维,别被表面数字迷惑。可做两步自检:(1)是否涉及递推?(2)是否有绝对数字断言?

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断