【发布时间】:2015-09-21 21:08:36
【问题描述】:
问题状态:“想象一个机器人坐在网格的左上角,有 r 行和 c 列。机器人只能在 2 个方向上移动,向右和向下,但某些单元格是“禁区”,因此机器人不能踩到它们。设计一个算法来为机器人找到一条从左上角到右下角的路径。”
我的解决方案是执行以下操作:
while grid[r-1, c] !=null && grid[r-1][c] !=false
{
moveRobotDown();
}
while grid[r, c-1] !=null && grid[r][c-1] !=false
{
moveRobotRight();
}
----在两个 while 循环之后,我将使用新的 r,c 坐标对函数进行递归调用。
这似乎是一个非常简单的实现,但答案键有一个相当冗长和复杂的解决方案。谁能给我解释一下为什么我的不起作用?
【问题讨论】:
-
如果在您的第一步中走下坡路会导致您陷入死胡同,什么时候会发生?您回溯并尝试另一条路线的逻辑在哪里?
标签: algorithm