给定一个颜色网格,每个格子的颜色是 1 到 C 的整数。小红从左上角走到右下角,每一步只能向右或向下。 她要选择一个颜色 x ,并把路径上的所有格子都修改成颜色 x 。把颜色 a 修改成 x 的代价为 |a-x| 。求路径和目标颜色均可自由选择时的最小总代价。
第一行输入 n,m,C ,随后 n 行每行 m 个整数表示网格。 保证 1 ≤ n,m,C ≤ 50 ,颜色均在 [1,C] 。
输出最小总代价。
3 3 3 2 3 3 1 2 3 2 3 1
3
2 3 20 1 2 20 20 20 20
19
考点:动态规划
数据规模 n ≤ 50 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:动态规划
本题切入点
枚举目标颜色 x,网格 DP 求「从左上到右下把路径全部改成 x 的最小代价」(每格代价 |a[i][j]−x|),取所有 x 的最小值;n,m,C≤50 时 O(n·m·C) 可行。
把问题拆成子问题,用状态表示「已处理到哪儿」,靠转移方程递推。
思路框架(动态规划 通法 · 非本题专属)
实现要点:一般是「先枚举阶段,再枚举状态,最后枚举决策」三层循环;空间大时可滚动数组优化。
复杂度:时间 O(状态数 × 转移代价) | 空间 O(状态数)
该范式的通法易错点
对照本题
样例 1:输入 3 3 3 / 2 3 3 / 1 2 3 / 2 3 1 → 输出 3
选择经过第一行和最后一列的路径,并统一修改为颜色 3,总代价为 3。
样例 2:输入 2 3 20 / 1 2 20 / 20 20 20 → 输出 19
沿第一列向下后一直向右,并统一修改为颜色 20,总代价为 19。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-06月17号开发岗。