这里是代码
#include<bits/stdc++.h>
using namespace std;
int n,m,sx,sy,p1,p2,t1,cnt=0;
int maze[1005][1005];
bool vis[1005][1005];
int dirx[4]={0,1,-1,0};
int diry[4]={1,0,0,-1};
bool in(int x,int y){
return 0<=x&&x<=n&&0<=y&&y<=n&&vis[x][y]==0;
}
struct node{
int x,y;
};
void bfs(int x,int y){
queue<node> Q;
Q.push((node){x,y});
while(Q.size()){
node t=Q.front();
Q.pop();
for(int i=0;i<4;i++){
int dx=t.x+dirx[i];
int dy=t.y+diry[i];
if(in(dx,dy)==0 /*||maze[dx][dy]=='*'*/ ||t1<maze[dx][dy]) continue;//问题在这里
Q.push((node){dx,dy});
cout<<dx<<" "<<dy<<endl;
vis[dx][dy]=1;
cnt++;
//vis[dx][dy]=1;
}
}
return ;
}
int main(){
cin>>n>>m>>p1>>p2;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>maze[i][j];
if(i==p1&&j==p2){
t1=maze[i][j];
}
}
}
bfs(p1,p2);
cout<<cnt;
return 0;
}
主要问题:在if(in(dx,dy)==0 /*||maze[dx][dy]=='*'*/ ||t1<maze[dx][dy]) continue;这里遇到了通过不了的点却还是在判断了四个方向后搜索了一遍
另:为什么把变量t1改成t就编译错误了?
附:用DFS也是一样的问题QWQ
解决问题有一关(不管多少个问题还是一关)回复也有一关!!