关于点的值处理的一个小tips

P1443 马的遍历

MinecraftQE @ 2024-12-22 10:39:49

由样例可知,起点的值为0,马踩不到的点的值为-1

当然,可以使用memset进行全体初始化为-1,然后把起点修改为0,后面踩到的点为1,2,3,...

但是,为什么我们不把答案中全体数组的值加1再进行考虑呢?

怎么想到的:

  1. 知所周众,将数组放到main函数外面作为全局变量,程序运行后所有单元初始值为0。
  2. 这个题很容易看出来是广度优先搜索,也就是说,马踩不到的点不可能被放到用于存储数据的队列里面
  3. 理所当然地想到,在我们设定的数组中,所有马踩不到的点的值为0
  4. 换句话说,输出的时候全体数组的值都要-1以免产生特判

注意:在进行搜索的时候,所有马踩到的点的结果都要比最终答案的值多1(起点的部分直接在开始定为1就行了)


|