80分求助,4 5WA
查看原帖
80分求助,4 5WA
904704
Orange123416楼主2023/9/24 16:44

C语言写的,其他的函数都省略了,board初始化为-2,可以走的初始化为-1

void Navigate(int board[N][M], queue* q, int x, int y)
{
	board[x][y] = 0;//初始位置
	int pos[] = { x,y };//当前位置
	int map[N][M] = { 0 };//是否走过
	PUSH(q, pos);
	map[x][y] = 1;
	int tmp[] = { x,y };
	while (!IsEmpty(q))
	{
		pos[0] = TOP(q)[0];
		pos[1] = TOP(q)[1];
		POP(q);
		int i;
		for (i = 1;i <= 8;i++)
		{
			Move(tmp, i);
			if (board[tmp[0]][tmp[1]] != -2 && map[tmp[0]][tmp[1]] != 1)
			{
				PUSH(q, tmp);
				board[tmp[0]][tmp[1]] = board[pos[0]][pos[1]] + 1;
				map[tmp[0]][tmp[1]] = 1;
			}
			tmp[0] = pos[0];
			tmp[1] = pos[1];
		}
	}
}
2023/9/24 16:44
加载中...