我...写了点..还没啥反应..完了条件好像还错了
呜呜呜呜呜呜
#include <bits/stdc++.h>
using namespace std;
struct point{
int x;
int y;
int step;
}a,b;
queueq;
int main()
{
int n,m;
cin>>n>>m;
char mp[n][m],vis[n][m];
int dir[4][2]={{0,-1},{-1,0},{0,1},{1,0}};
int x,y,s,t;
cin>>x>>y>>s>>t;
a.x=x,a.y=y,a.step=0;
vis[x][y]=1;
q.push(a);
int ans=0; //读入起点终点坐标
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>mp[i][j]; //读入地图
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(mp[i][j]=='*') mp[i][j]='1';
if(mp[i][j]=='.') mp[i][j]='0';
} //字符迷宫变为 0,1 迷宫
memset(vis,0,sizeof(vis));
while(!q.empty()) q.pop(); //初始化操作
while(!q.empty())
{
a=q.front();
q.pop();
if(a.x==s&&a.y==t) //越界 a.x<1&&a.x>n&&a.y<1&&a.y>m
{
ans=a.step;
break;
}
for(int i=0;i<=3;i++)
{
int xx=a.x+dir[i][0];
int yy=a.y+dir[i][1];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&!vis[xx][yy]&&!mp[xx][yy]) //这个点 没走过 还不是墙
{
vis[xx][yy]=1;
b.x=xx,b.y=yy,b.step=a.step+1;
q.push(b);
}
}
}
cout<<ans<<endl;
return 0;
}
请看这个帖子下面的 “相关推荐”, 你就会发现很多解答。