本题思路: 我是用BFS广度搜索做的, 考场上写完了, 没提交上去, 明明还有3分钟结束, 竟然提交不了了
这题的难点是游戏规则的第三与第四条, 前面两点规则很简单就不说了, 其实第三与第四条规则就是给每个顶点状态加一个地图格子标记数组与一个地图斜边标记数组就行了, 因为你会发现, 因为每走一步地图对应的状态都会发生改变, 所以, 我们必须为每个顶点设置一个地图格子标记数组与一个地图斜边标记数组, 这里看清楚是每个顶点, 而不是所有顶点共用这两个数组, 具体看代码会做详细解释, 还有一件事, 题目给出必须按照字典顺序最小输出, 这也很简单, 定义两个数组一个xx数组一个yy数组, 这两个数组的下标顺序就是题目图中给出的0 ~ 7这八个方向顺序, 顺序遍历行走就行, 默认就是最小字典序话不多说看代码, 有详细注解, 可以把代码复制到自己的编辑器上观看, csdn上面可能位置小, 观看体验不行.
#include <bits/stdc++.h>
using namespace std;
int n, k;
int g[15][15]; // 地图
int xx[8] = {-1, -1, 0, 1, 1, 1, 0, -1}; // 方向数组x, 这里的方向数组按照他给的顺序排, 自动会是最小字典序
int yy[8] = {0, 1, 1, 1, 0, -1, -1, -1}; // 方向数组y, 这里的方向数组按照他给的顺序排, 自动会是最小字典序
// 我们为什么要在为每个顶点都加一个vis