您将获得一个使用这三个可能值初始化的MxN 2D网格。
-1 - 墙壁或障碍物。
0 - 门。
INF - Infinity意味着一个空房间
将每个空房间填充到离它最近的门的距离。
例如,给定2D网格:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="commentOwnerPost">
<div class="commentPostHeader">
<h4 class="commentOwnerName"><a href="">NavyFoxKid</a></h4>
<h4 class="commentPostDate">3 days ago</h4>
</div>
<p class="commentText"> lorem ipsum dolor sit amet consectur lorem ipsum dolor sit amet consectur
amet consectur lorem ipsum dolor sit amet consectur lorem ipsum
</p>
<div class="commentPostFooter">
<a class="btnReply">Reply</a>
<a class="btnSeeMore">See More</a>
</div>
</div>
<div class="commentOwnerPost">
<div class="commentPostHeader">
<h4 class="commentOwnerName"><a href="">NavyFoxKid</a></h4>
<h4 class="commentPostDate">3 days ago</h4>
</div>
<p class="commentText"> lorem ipsum dolor sit amet.
</p>
<div class="commentPostFooter">
<a class="btnReply">Reply</a>
<a class="btnSeeMore">See More</a>
</div>
</div>
运行该功能后,2D网格应为:
INF -1 0 INF
INF INF INF -1
INF -1 INF -1
0 -1 INF INF
我从每0(门)开始使用BFS,并不断更新每个INF的最小值。下面是我的代码,它有效。
3 -1 0 1
2 2 1 -1
1 -1 2 -1
0 -1 3 4
但如果我们一次可以采取两个步骤,例如“左左”或“右上”,该怎么办?那么如何计算从每个INF到最近的门(0)的距离?我们还可以使用BFS吗?
答案 0 :(得分:1)
当然可以。现在你正在测试坐标:
(i+1, j)
(i, j+1)
(i-1, j)
(i, j-1)
对应于(i, j)
的北,南,东和西的值。只需添加以下测试:
(i+1, j+1)
(i-1, j-1)
(i+1, j-1)
(i-1, j+1)
对应于(i, j)
周围的对角线。
编辑:我误读了原帖。您还需要添加任何其他可能的组合,例如(i+2, j)
,对应于“右侧”。在开始之前制作可能结果的图表并制作完整列表将会很有帮助。
小心点。您拥有的代码非常混乱,添加四个语句时很容易出错。慢慢地,三重检查你的工作。