深搜
2023-12-30 16:40:35
发布于:广东
5阅读
0回复
0点赞
#include <iostream>
using namespace std;
int n, m;
bool mp[55][55];
bool vis[55][55];
int dir[4][2] = {-1, 0, 0, -1, 0, 1, 1, 0};
bool flag;
bool check(int x, int y){
if(x < 1) return 0;
if(x > n) return 0;
if(y < 1) return 0;
if(y > m) return 0;
if(vis[x][y]) return 0;
if(mp[x][y]) return 0;
return 1;
}
void dfs(int x, int y){
if(x == n && y == m){
flag = 1;
return;
}vis[x][y] = 1;
for(int i = 0; i < 4; i++){
int xx = x + dir[i][0];
int yy = y + dir[i][1];
if(check(xx, yy)) dfs(xx, yy);
//vis[xx][yy] = 0;
}
}
int main(){
cin >> n >> m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cin >> mp[i][j];
}
}dfs(1, 1);
if(flag) cout << "Yes";
else cout << "No";
return 0;
}
这里空空如也
有帮助,赞一个