#5985. 空调遥控器题解

空调遥控器题解

错误分析

原代码存在以下关键错误:

  1. 方向数组定义错误dx 数组包含错误值(如多余的 -10),缺少 +5+10 的正确操作,导致按键操作不完整。
  2. 队列指针未初始化t1 未赋初值,直接使用 ++t1 会导致内存访问错误。
  3. 范围判断有误:温度可以为 0,但原代码判断 nx>0,且上限 1000 无意义(题目范围为 0~40)。
  4. 未处理初始相等情况:若 a==b,应直接输出 0,原代码未显式处理。

修正后的代码(带详细注释)

代码说明

  1. BFS 算法:求“最少按键次数”等价于求从 ab 的最短路径,BFS 是最适合的算法(按层遍历,首次到达目标时步数最少)。
  2. 方向数组:明确列出 ±1±5±10 六种操作,确保覆盖所有按键方式。
  3. 访问标记:用 vis 数组避免重复访问同一温度,防止死循环和冗余计算。
  4. 边界处理:提前判断 a==b 的情况,温度范围限制在 0~40 内,符合题目要求。