全部评论 3

  • 广搜>>>

    // . . # # #
    // # . . . .
    // # . # . #
    // # . # . #
    // # . # . .
    #include <bits/stdc++.h>
    using namespace std;
    struct node{
        int x,y;
    };
    char ma[50][50];
    bool vis[50][50];
    queue<node>q;
    int n,m;
    int dx[4]={0,0,1,-1};
    int dy[4]={1,-1,0,0};
    void bfs(int x,int y){
        q.push((node){x,y});
        vis[x][y]=1;
        while(!q.empty()){
            x=q.front().x;
            y=q.front().y;
            q.pop();
            if(x==n&&y==m){
                cout<<"YES"<<endl;
                return;
            }
            for(int i=0;i<4;i++){
                int nx=x+dx[i];
                int ny=y+dy[i];
                if(nx<=0||nx>n||ny<=0||ny>m) continue;
                if(ma[nx][ny]=='#') continue;
                if(vis[nx][ny]==1) continue;
                q.push((node){nx,ny});
                vis[nx][ny]=1;
            }
        }
        cout<<"NO"<<endl;
    
    }
    int main(){
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin>>ma[i][j];
            }
        }
        bfs(1,1);
        return 0;
    }
    

    深搜>>>

    // . . # # #
    // # . . . .
    // # . # . #
    // # . # . #
    // # . # . .
    #include <bits/stdc++.h>
    using namespace std;
    int n,m;
    int dx[4]={0,1,0,-1};
    int dy[4]={1,0,-1,0};
    char ma[50][50];
    bool vis[50][50];
    bool flag=0;
    void dfs(int st,int x,int y){
        if(x==n&&y==m){
            flag=1;
            return;
        }
        for(int i=0;i<4;i++){
            int nx=x+dx[i];
            int ny=y+dy[i];
            if(nx<=0||nx>n||ny<=0||ny>m) continue;
            if(ma[nx][ny]=='#') continue;
            if(vis[nx][ny]==1) continue;
            vis[nx][ny]=1;
            dfs(st+1,nx,ny);
        }
    
    }
    int main(){
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin>>ma[i][j];
            }
        }
        vis[1][1]=1;
        dfs(0,1,1);
        if(flag==1) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
        return 0;
    }
    

    2024-08-10 来自 浙江

    0
  • 《电梯游戏》你内容看了吗?只是同名

    2024-08-10 来自 浙江

    0
  • int yy=head.x+dir[i][1];
    ........................^
    不要混用

    2024-08-10 来自 浙江

    0

热门讨论