详细解释~
2025-06-15 16:25:03
发布于:上海
9阅读
0回复
0点赞
#include <iostream>
using namespace std;
char a[110][110]; //迷宫
int x1,y1,x2,y2 ;//起点与终点
int dir[4][2]={{1,0},{0,-1},{-1,0},{0,1}} ;//方向数组
int n ;//迷宫的规模
bool flag=0 ; //标签
//判断此步是否合法
bool check(int x,int y){
if (x>=1 && y>=1 && x<=n && y<=n && a[x][y]=='.') return 1 ;
return 0 ;
}
//深度优先搜索
void DFS(int x,int y){
//把这一步记录
a[x][y]='#' ;
//判断是否到终点
if (x==x2+1 && y==y2+1){
flag=1 ;
return ;
}
int tx,ty ;//下一步的坐标
for (int i=0;i<4;i++){ //遍历四个方向
//增加对应坐标
tx=x+dir[i][0] ;
ty=y+dir[i][1] ;
if (check(tx,ty)){ //判断是否合法
DFS(tx,ty) ; //递归
}
}
}
int main(){
cin >> n ;
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++){
cin >> a[i][j] ;
}
}
cin >> x1 >> y1 >> x2 >> y2 ;
if (a[x1+1][y1+1]=='#' || a[x2+1][y2+1]=='#'){
cout << "no" ;
return 0;
}
DFS(x1+1,y1+1);
if (flag==1){
cout << "yes" ;
}
else{
cout << "no" ;
}
}
这里空空如也
有帮助,赞一个