简单迷宫问题[2]
时间限制:1秒 内存限制:256M
【问题描述】
一个网络迷宫有 \(m\) 行 \(n\) 列的单元格组成,每个单元格要么是空地(用1表示),要么是障碍物(用0表示)。在迷宫中行走时,每一步只能上下左右移动到相邻的格子中,且任何时候都不能在障碍格中,也不能走道迷宫之外。起点和终点保证是空地。
现在给出迷宫,请你编程找到起点到终点最少的移动步数。
【输入格式】
第 1 行包含两个整数 \(m\) 和 \(n\),表示迷宫是 \(m\) 行 \(n\) 列。
接下来的 \(m\) 行每行包含长度为 \(n\) 的01串,其中第 \(i+1\) 行的第 \(j\) 个字符是’0’,表示迷宫的第 \(i\) 行第 \(j\) 列是障碍物,是’1’表示迷宫的第i行第j列是空地。
最后一行包含四个整数:\(sx,sy,ex,ey\),\((sx,sy)\) 表示起点行号和列号,\((ex,ey)\) 表示终点的行号和列号。
注意:迷宫的行号和列号编号都是从 1 开始的。
【输出格式】
一个整数,表示最少的移动步数,如果从起点不能走到终点,则输出"None"。
【输入输出样例1】
Input
5 6
111111
100011
011111
110101
110111
2 5 5 1
Output
7
【输入输出样例2】
Input
5 4
1100
1000
0110
1101
1111
1 1 5 4
Output
None
【数据说明】
对于所有数据保证 \(1<m,n≤25\)。
【来源】
Mr.he