确定一个障碍可以行驶多少点

时间:2018-07-24 10:38:43

标签: algorithm breadth-first-search path-finding

假设我们有一个带有坐标的字段,并且机器人从(0, 0)开始,并且可以向上,向下,向左或向右移动,但不能对角移动。

对于任何给定位置(x, y),机器人可以移动到(x-1, y), (x+1, y), (x, y-1), (x, y+1),但不能移动到(x-1, y-1), (x+1, y+1), (x-1, y+1), (x+1, y-1)

此外,障碍物的放置方式是,其坐标数字加起来等于或大于21的任何位置,例如(45, -94)是一个障碍,因为4 + 5 + 9 + 4 = 22 >= 21,而(-112, 223)并不是因为1 + 1 + 2 + 2 + 2 + 3 = 11 < 21
机器人无法跨入障碍物或穿过障碍物。它必须围绕它移动。

要确定机器人可以进行的位置数量,首先要考虑的是穷举搜索,首先要进行广度搜索。
-这是唯一的方法吗?
-有更快的方法吗?
-如何使用障碍物知识来解决它?

1 个答案:

答案 0 :(得分:4)

如果x或y = +/- 399,则点是障碍物,因此障碍物点的矩形范围从(-399,-399)到(399,399)。

由于您无法到达该矩形之外的任何物体,因此可到达的点少于640000,并且简单的BFS可能是一个合理的解决方案。