使用BFS算法时,第一次出来的路径即是最短路径!!!!说实话,为什么是最短路径我还真不知道怎么讲清楚。举个简单的例子吧。一个2行3列的数组,第一行是1、2、3,第二行是4、5、6。把它当成一个迷宫,每个点都可以走,起点是1,终点是5。根据BFS算法:
- 第一层: 1 入队
- 第二层 : 2、4入队
- 第三层 :先3、5入队,再5入队 (注意,这里有两个5结点,但是它们的前驱结点是不一样的,一个是2,一个是4。)
可以看到,在第三层的时候,已经到达终点了,第三层所以包含5的结点都是路径最短的,最短路径是3-1=2步。 而其他比2步要长的路径显然在第四层或者第四层以上。
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Stack;
public class MiGong {
public static void main(String[] args) {
int[][] A={
{
0,0,1,0},
{
0,0,1,0},
{
1,0,0,0},
{
0,1,0,0}
};
new MiGong().findMinRode(A);
}
class Node{
int x;
int y;
int dis;
Node pre;