60求调
  • 板块B3625 迷宫寻路
  • 楼主RonL
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/6 21:38
  • 上次更新2024/5/7 12:10:14
查看原帖
60求调
1074633
RonL楼主2024/5/6 21:38
#include<bits/stdc++.h>
using namespace std;
int n,m;
char arr[105][105];
bool flag = false;
int dx[4] = {-1,1,0,0};
int dy[4] = {0,0,-1,1};
bool vis[105][105] = {false};
void dfs(int x,int y){
    int nx,ny;
    if(x == n && y == m){
        cout << "Yes";
        exit(0);
    }else{
        for(int i=0;i<4;i++){
            nx = x+dx[i];
            ny = y+dy[i];
            if(nx >= 1 && nx <= n && ny >= 1 && ny <= m && vis[nx][ny] == false){
                vis[nx][ny] = true;
                dfs(nx,ny);
                vis[nx][ny] = false;
            }else{
                continue;
            }
        }
        return;
    }
}
int main(){
    cin >> n >> m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin >> arr[i][j];
        }
    }
    if(arr[1][1] == '#' || arr[n][m] == '#' || (arr[1][2] == '#' && arr[2][1] == '#')){
        cout << "No";return 0;
    }
    dfs(1,1);
    cout << "No";
    return 0;
}


2024/5/6 21:38
加载中...