刷算法题时遇到“图路径最短时间”就慌?这道“七宝石收集”题,其实用小学级数学逻辑+贪心策略就能秒解!今天把官方题解“翻译成人话”,还拆透背后的思维逻辑,以后遇到类似题直接套模板~

先把题目里的图简化成人话:

要拿完7个宝石,必须走的路是:从中心点到6个外围点,但外围点之间要不要走?
这里的“贪心”就是:比较“从中心点再走一次A”和“外围点之间走一次B”,哪个更省时间。
A(回中心) + A(去Y) = 2A 秒;B 秒;A 秒;A + 5 × min(2A, B)。看图片里的代码,其实就是把上面的逻辑翻译成C语言:
#include <stdio.h>
int main() {
int A, B;
scanf("%d%d", &A, &B);
// 核心:比较2*A和B,选小的那个
if (2*A <= B) {
printf("%d", A + 5*2*A); // 等价于 A*11
} else {
printf("%d", A + 5*B);
}
return 0;
}比如输入A=2,B=2(对应示例):
这题的本质是**“两点间多路径选择,选成本最低的”**,类似场景:
通用解题步骤:
很多人看到“图”就想DFS/BFS,但这题的图结构是固定的(六边形+中心),且路径成本只有两种,贪心策略比图算法更高效——这也是算法题的常见技巧:先看结构是否固定,再选最简解法。
这道题看起来是“图路径问题”,实际是“贪心策略的数学计算”。以后遇到类似“固定结构+有限成本选项”的题,先别着急写复杂代码,先拆“基础成本”和“可选成本”,往往能秒解!
你遇到过哪些“看起来复杂,实际很简单”的算法题?评论区分享,我帮你拆透逻辑~