警示后人----MLE
查看原帖
警示后人----MLE
719225
Nailoong_SHM楼主2023/9/13 19:46

如果你用的是BFS

并且用了标记数组

还MLE了

因为

需要在走的时候,标记已经走过了的点

比如

for(int i=0;i<4;i++){
    int nx=tmp.x+dx[i];
    int ny=tmp.y+dy[i];
    if(nx>0 && nx<=n && ny>0 && ny<=n && !vis[nx][ny]){
        q.push({nx,ny,tmp.step+1});
    }
}

要改成

for(int i=0;i<4;i++){
    int nx=tmp.x+dx[i];
    int ny=tmp.y+dy[i];
    if(nx>0 && nx<=n && ny>0 && ny<=n && !vis[nx][ny]){
        q.push({nx,ny,tmp.step+1});
        v[nx][ny]=1;//<------这里
    }
}
2023/9/13 19:46
加载中...