求助!
查看原帖
求助!
486799
BlackPanda楼主2022/2/25 19:49

代码哪里错了?0分!麻烦帮忙看一下!!!```cpp #include <bits/stdc++.h> using namespace std;

struct Node{ int x,y,t; };

queue q; int n,m; int sx,sy,ex,ey; int xx[]={-1,1,0,0},yy[]={0,0,-1,1}; bool vis[305][305]; char mp[305][305];

void bfs(int x,int y,int t){ Node f,r; r={x,y,t}; q.push(r); vis[x][y]=1; while(!q.empty()){ f=q.front(); q.pop(); if(f.x==ex&&f.y==ey){ cout<<f.t<<endl; return ; } if(mp[f.x][f.y]=='w'){ for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(i!=f.x && j!=f.y && mp[i][j] == 'w') f.x=i,f.y=j; } } } for(int k=0;k<4;k++){ int dx=xx[k]+f.x; int dy=yy[k]+f.y; if(dx>=1&&dx<=n&&dy>=1&&dy<=m&&vis[dx][dy] == 0){ if(mp[dx][dy]=='w'){ for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(i!=dx && j!=dy && mp[i][j] == 'w') dx=i,dy=j; } } } r={dx,dy,t+1}; q.push(r); } } } }

int main(){ cin>>n>>m; memset(vis,-1,sizeof(vis)); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>mp[i][j]; if(mp[i][j] == '.') vis[i][j]=0; if(mp[i][j] == '@') sx=i,sy=j; if(mp[i][j] == '=') ex=i,ey=j; } } bfs(sx,sy,0); return 0; }

2022/2/25 19:49
加载中...