最近我遇到了一个问题,说:
假定迷宫具有字符*
,.
,C
。 *
代表墙壁,.
/C
被允许。只有一个点标记为C
。现在给定一个僵尸站在任何允许点上,存在一系列命令(例如LDDRU
或LLLRRDU
等),使得如果僵尸程序从任何允许点开始,它至少通过C
一次。
如:从所有起点解决迷宫
******
*.C..*
**.***
*....*
******
命令:RLLURUU
现在我知道如何解决使用DFS/BFS迷宫(最短路径)。但任何人都可以提供一个关于如何处理这样的问题的暗示吗?
编辑:如果下一步是进入墙壁/外部迷宫,它将被忽略。和往常一样L
是左R
是正确U
IS UP D
是关闭。
最远可以水平移动3步;例如; LLL,你只能在网格中的三个位置;在接下来的R之后,你可以在垂直走廊的三个位置;在UU之后,你肯定已经通过了C,所以一般来说:做出一些减少你可能位置的数量的动作,然后跟踪你所有可能的机器人,并使每个动作通过C,通过使用“如果有墙,机器人不动”的规则。每当两个可能的机器人结束在同一个方格中时,移除其中一个。 – m69
@ m69,谢谢你的回答。但更清楚的是,你可以使用给出的例子,并解释你的逻辑到达答案....谢谢! – yobro97
3行中有9个可能的位置;在LLL之后,任何机器人将位于其最左边的位置,所以现在只有3个可能的位置;在另一个R之后,这3个机器人将位于第二左边位置(垂直走廊);在UU之后,它们都会在C上结束。 – m69