题目去掉马甲,就是求S到大E的最短路径,并记录下来。
pre初始化为-1,然后bfs搜索,把这一步走的方向赋给op,pre为走到该方向的前一个方向在队列中的位置,最后从后向前找到方向,赋值给ans数组,逆置ans得到最短路径。
核心代码:
typedef struct
{
int x, y;
char op;//此刻方向
int pre;//到达op方向,在队列中的位置
}Robot;
void Path(int k)
{
int len = 0;
while(que[k].pre != -1)
{
ans[len++] = que[k].op;
k = que[k].pre;
}
strrev(ans);
}
tt.op = dir[i][2];
tt.pre = head-1;