深搜题解
2025-03-08 08:39:32
发布于:上海
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n,m,mp[45][45],vis[45][45],ans;
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};
void dfs(int x,int y){
if(x == n && y == m && ans == 0){
ans = 1;
cout << "YES";
return;
}
for(int i = 0;i < 4;i++){
int nx = dx[i] + x;
int ny = dy[i] + y;
if(nx < 1 || nx > n || ny < 1 || ny > m || vis[nx][ny] == 1 || mp[nx][ny] == 1){
continue;
}vis[nx][ny] = 1;
dfs(nx,ny);
}
}
int main(){
cin >> n >> m;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
cin >> mp[i][j];
}
}vis[1][1] = 1;
dfs(1,1);
if(ans == 0){
cout << "NO";
}
return 0;
}
这里空空如也
有帮助,赞一个