1744 迷宫
#include<bits/stdc++.h>
using namespace std;
/*
二维数组:地图、标记数组
递归:搜索方法dfs(),通过一个坐标搜索四个方向
其他:二维数组中的上右下左方向数组
*/
int G[15][15]; //地图
bool vis[15][15];//标记数组和地图一样大,1代表被走过,0代表没有
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1}; //dx是横坐标 dy是纵坐标
int n;//n*n大小
int f = 0;//标记是否能走到,1代表能,0代表不能
//dfs()搜索函数
void dfs(int x,int y){
if(x==n&&y==n){ //判断该坐标是终点
f=1; //修改标记能到达终点
return ;
}
//依次检查4个方向
for(int i=0;i<4;i++){
//求出下一个目标点的坐标
int xx = x+dx[i];
int yy = y+dy[i];
//判断位置是否合法,全部成立
//地图内 xx>=1&&xx<=n&&yy>=1&&yy<=n
//可以通行/不为障碍物 G[xx][yy]!=1
//没有被走过 vis[xx][yy]==0
if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&G[xx][yy]!=1
&&vis[xx][yy]==0){
vis[xx][yy]=1;//走这个点,标记走过
dfs(xx,yy); //继续搜索这个点
}
}
}
int main(){
//地图输入
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>G[i][j];
}
}
//标记起点,开启搜索
vis[1][1]=1;
dfs(1,1);
//非0为真
if(f) cout<<"YES";
else cout<<"NO";
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现