迷宫(信息学奥赛一本通-1215)

news/2025/2/14 2:48:56/

 【题目描述】

一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n×n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为#),则看成无法办到。

【输入】

第1行是测试数据的组数k,后面跟着k组输入。每组测试数据的第1行是一个正整数n(1≤n≤100),表示迷宫的规模是n×n的。接下来是一个n×n的矩阵,矩阵中的元素为.或者#。再接下来一行是4
个整数ha,la,hb,lb,描述A处在第ha行, 第la列,B处在第hb行, 第lb列。注意到ha,la,hb,lb全部是从0
开始计数的。

【输出】

k行,每行输出对应一个输入。能办到则输出“YES”,否则输出“NO”。

【输入样例】

2
3
.##
..#
#..
0 0 2 2
5
.....
###.#
..#..
###..
...#.
0 0 4 0

【输出样例】

YES
NO

【题解代码】

解法一:dfs

#include<bits/stdc++.h>  //万能头文件
using namespace std;const int N = 1e3 + 10;
char g[N][N];  //迷宫数组
int n;  //迷宫大小
int sx, sy, tx, ty;  //起点和终点的坐标
int flag;  //标记是否到达
bool vis[N][N];  //标记数组
//方向数组
int dx[] = { -1,1,0,0 };
int dy[] = { 0,0,-1,1 };void dfs(int px, int py )
{if (px == tx && py == ty)  //当前搜素的点是终点{flag = true;  //标记找到return;  //结束}for (int i = 0; i < 4; i++)  //搜索当前点的邻接点{int bx = px + dx[i]; int by = py + dy[i];if (bx<1 || bx>n || by<1 || by>n)continue;  //越界,跳过本次搜索if (g[bx][by] == '#')continue;  //遇到障碍物,跳过本次搜索if (vis[bx][by] == 1)continue;  //已经搜索过,跳过本次搜索vis[bx][by] = 1;  //除上述不能搜索的情况外,标记并搜索dfs(bx, by);}
}int main()
{int k; cin >> k;while(k--){cin >> n;for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){cin >> g[i][j];}}cin >> sx >> sy >> tx >> ty;sx++, sy++, tx++, ty++;  //本题中的起始位置从0开始,创建的数组从1开始,通过++同步flag = false;  //假设找不到memset(vis, 0, sizeof vis);  //标记数组清空vis[sx][sy] = 1;  //将起始位置标记dfs(sx, sy);if (flag){cout << "YES" << endl;}else{cout << "NO" << endl;}}return 0;
}

解法二:bfs

#include<bits/stdc++.h>  //万能头文件
using namespace std;const int N = 1e3 + 10;
char g[N][N];  //迷宫数组
int n;  //迷宫大小
int sx, sy, tx, ty;  //起点和终点的坐标
int flag;  //标记是否到达
bool vis[N][N];  //标记数组
//方向数组
int dx[] = { -1,1,0,0 };
int dy[] = { 0,0,-1,1 };struct point
{int x, y;
};void bfs(point s)
{queue<point> q;q.push(s);  //起点入队while (!q.empty()){point cur = q.front();q.pop();if (cur.x == tx && cur.y == ty)  //当前搜索点是终点{flag = true;  //标记return;  //结束}for (int i = 0; i < 4; i++){int bx = cur.x + dx[i]; int by = cur.y + dy[i];if (bx<1 || bx>n || by<1 || by>n)continue;  //越界,跳过本次搜索if (g[bx][by] == '#')continue;  //遇到障碍物,跳过本次搜索if (vis[bx][by] == 1)continue;  //已经搜索过,跳过本次搜索vis[bx][by] = 1;  //除上述不能搜索的情况外,标记并搜索q.push({ bx,by });}}
}int main()
{int k; cin >> k;while (k--){cin >> n;for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){cin >> g[i][j];}}cin >> sx >> sy >> tx >> ty;sx++, sy++, tx++, ty++;  //本题中的起始位置从0开始,创建的数组从1开始,通过++同步flag = false;  //假设找不到memset(vis, 0, sizeof vis);  //标记数组清空vis[sx][sy] = 1;  //将起始位置标记bfs({ sx, sy });if (flag){cout << "YES" << endl;}else{cout << "NO" << endl;}}return 0;
}

http://www.ppmy.cn/news/1571857.html

相关文章

怎么查看电脑显存大小(查看电脑配置)

这里提供一个简单的方法查看 winr打开cmd 终端输入dxdiag进入DirectX 点击显示查看设备的显示内存&#xff08;VRAM&#xff09; 用这个方法查看电脑配置和显存是比较方便的 dxdiag功能 Dxdiag是Windows的DirectX诊断工具&#xff0c;其主要作用包括但不限于以下几点&#…

主机安全:数字时代的基石

在数字化转型的浪潮中&#xff0c;主机安全已成为企业信息安全体系中最关键的防线。主机作为企业数据存储、应用运行的核心载体&#xff0c;承载着企业最重要的数字资产。每一次网络攻击事件的发生&#xff0c;都在警示我们&#xff1a;主机安全不仅关乎数据安全&#xff0c;更…

【开源项目】数字孪生武汉~超经典智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码

飞渡科技数字孪生武汉CIM管理平台&#xff0c;基于自研数字孪生引擎&#xff0c;结合数字孪生、物联网IOT、云计算等信息技术&#xff0c;以城市数据资源融合共享为主线&#xff0c;打造感知、联结、计算、运用“四位一体”的城市大脑&#xff0c;赋能经济社会高质量可持续发展…

vue2和vue3储存组件

在 Vue.js 中&#xff0c;组件是构建用户界面的核心单元。无论是 Vue 2 还是 Vue 3&#xff0c;组件的基本概念和使用方式都比较相似&#xff0c;但在实现细节和性能优化方面&#xff0c;Vue 3 有了一些改进。以下是对 Vue 2 和 Vue 3 中组件的简单说明&#xff0c;包括它们的存…

在 Go 中实现事件溯源:构建高效且可扩展的系统

事件溯源&#xff08;Event Sourcing&#xff09;是一种强大的架构模式&#xff0c;它通过记录系统状态的变化&#xff08;事件&#xff09;来重建系统的历史状态。这种模式特别适合需要高可扩展性、可追溯性和解耦的系统。在 Go 语言中&#xff0c;事件溯源可以通过一些简单的…

河北某石油管廊自动化监测

1. 项目简介 近年来&#xff0c;国家密集出台油气管道建设相关政策和规划引导中国油气管道加快建设&#xff0c;2017年&#xff0c;在《中长期油气管网规划》中对2025年和2030年油气管道发展目标均作出了相应的规划目标。另一方面&#xff0c;随着油气管道行业的发展&#xff…

课后综合练习

一、 拓扑 二、需求分析 1、根据下表完成相关配置 2、配置DHCP协议&#xff0c;具体要求如下 3、防火墙安全区域配置 4、防火墙地址组信息 5、管理员 6、用户认证配置 1、部门A分为运维部、高层管理、财务部&#xff1b;其中&#xff0c;财务部IP地址为静态IP。高管地址DHCP固…

PH热榜 | 2025-02-10

1. 2pr 标语&#xff1a;人工智能帮你把想法变成LinkedIn爆款 或者更口语化一点&#xff1a; AI帮你把点子变成LinkedIn上的热门帖子 介绍&#xff1a;用AI主持的访谈&#xff0c;把你的想法变成LinkedIn爆款帖子。录制你的想法&#xff0c;让AI帮你创作个性化、引人入胜的…