40PTS求调

B3625 迷宫寻路

mmnBilibili @ 2025-01-07 20:12:23

自己看了亿遍,寻思着也煤油问题啊。。。

#include<bits/stdc++.h>

using namespace std;

int dx[5]={0,0,-1,1},dy[5]={-1,1,0,0};
char a[105][105];
int n,m;
bool bfs(int x,int y){
    a[x][y]='#';
    if(x==n&&y==m)return true;
    for(int i=0;i<4;i++){
        int gx=x+dx[i],gy=y+dy[i];
        if(a[gx][gy]=='#'||gx<1||gx>n||gy<1||gy>m)continue;
        return bfs(gx,gy);
    }
    return false;
}

signed main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j];
    if(bfs(1,1))cout<<"Yes";
    else cout<<"No";
    return 0;
}

by 4041nofoundGeoge @ 2025-01-07 20:28:06

@mmnBilibili

有以下的问题:

  1. 你家 BFS 长这样?这是 DFS!
  2. 你的用来记录是否走过的 visit 数组呢?

by mmnBilibili @ 2025-01-08 18:38:07

@4041nofoundGeoge 我承认我确实没把BFS和DFS分清,但是我这个visit数组没有是因为我把走过的都标记为墙


by 4041nofoundGeoge @ 2025-01-08 18:40:11

@mmnBilibili那你这个没有回溯,会导致能走的地方被你自己封上。


|