这有一个迷宫,有0~8行和0~8列:
0表示道路,1表示墙。
现在输入一个道路的坐标作为起点,再如输入一个道路的坐标作为终点,问最少走几步才能从起点到达终点?
(注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3,1)到(4,1)。)
-
输入
-
第一行输入一个整数n(0
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。
输出
- 输出最少走几步。 样例输入
-
2 3 1 5 7 3 1 6 7
样例输出
-
12 11
深搜入门题ORZ。。。因为迷宫0竖着排得多,所以先下再上再右再左。
检测过了的,标记为1,四个方向都检测过,走不通,则恢复为0,再返回上一层。
第一次找到终点后,回到终点前一个点,继续向其他方向搜索。
#include
int c, d, ans, a, b;
void dfs(int m, int n, int step, int vis[][9])
//注意二维数组传递方式
{
}
int main()
{
}
广搜代码:
#include
#include
#include
#include
using namespace std;
int step, a, b, c, d, dirx[4] = {1, -1, 0, 0}, diry[4] = {0, 0, 1, -1};
typedef struct node
{
}node;
int bfs(int x, int y, int m[][9])
{
}
int main()
{
}