题解!!!
2025-07-22 16:53:55
发布于:江苏
3阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n,m,flag;
int mp[50][50];
int vis[50][50];
void bfs(int x, int y){
if(x == n && y == m){
flag = 1;
return ;
}
int newx, newy;
newx = x - 1, newy = y;
if(mp[newx][newy] == 0 && newx >= 1 && newx <= n && newy >= 1 && newy <= m && vis[newx][newy] == 0){
vis[newx][newy] = 1;
bfs(newx,newy);
}
newx = x + 1, newy = y;
if(mp[newx][newy] == 0 && newx >= 1 && newx <= n && newy >= 1 && newy <= m && vis[newx][newy] == 0){
vis[newx][newy] = 1;
bfs(newx,newy);
}
newx = x, newy = y + 1;
if(mp[newx][newy] == 0 && newx >= 1 && newx <= n && newy >= 1 && newy <= m && vis[newx][newy] == 0){
vis[newx][newy] = 1;
bfs(newx,newy);
}
newx = x, newy = y - 1;
if(mp[newx][newy] == 0 && newx >= 1 && newx <= n && newy >= 1 && newy <= m && vis[newx][newy] == 0){
vis[newx][newy] = 1;
bfs(newx,newy);
}
}
int main(){
cin >> n >> m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++) cin >> mp[i][j];
}
bfs(1,1);
if(flag) cout << "YES";
else cout << "NO";
return 0;
}
懒得写注释了,自己理解吧
这里空空如也
有帮助,赞一个