题目:
https://www.luogu.com.cn/problem/P1746
bfs模型,注意下输入是字符,也要创建个字符数组。
代码如下:
#include <iostream>
#include<algorithm>
#include<queue>
using namespace std;
int dx[] = {0,1,0,-1};
int dy[] = {1,0,-1,0};
struct Node{
int x;
int y;
int step;
};
bool stl[1005][1005];
char map[1005][1005];//0 表示马路,1 表示店铺,注意两个数之间没有空格
int n;
int x1,y1,x2,y2;
int main()
{
cin >> n;
for(int i = 1 ; i <= n ; i++)
{
for(int j = 1 ; j <= n ; j++)
{
cin >> map[i][j];
}
}
cin >> x1 >> y1 >> x2 >> y2;
queue <Node> q;//创建队列
Node start = {x1,y1,0};//直接创建队首对象start
q.push(start);
stl[x1][y1] = true;
while(!q.empty())
{
int x = q.front().x;//取出队首的x,y
int y = q.front().y;
int step = q.front().step;
if(x == x2 && y == y2)
{
cout <<step;
break;
}
for(int k = 0 ; k < 4 ; k++)
{
int tx = x + dx[k];
int ty = y + dy[k];
if(tx >= 1 && tx <= n && ty >= 1 && ty <= n && stl[tx][ty] == false && map[tx][ty] == '0')
{
stl[tx][ty] = true;//标记已探索
Node newpos;
newpos.x = tx;
newpos.y = ty;
newpos.step = step + 1;
q.push(newpos);
}
}
q.pop();
}
return 0;
}