【题目描述】
一天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

//1215:迷宫
//可以想象成一边走一边染色,.代表白色,#代表黑色,只要从起始点A一路能够染色到达终点B即可。
#include<iostream>
using namespace std;
int zu,n,i,j,ha,la,hb,lb;
char a[100][100];
int x[4]={-1,0,1,0},y[4]={0,1,0,-1};
bool flag=false;//flag标记是否找到
void input()
{for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>a[i][j];return;
}
void print()
{for(i=0;i<n;i++){for(j=0;j<n;j++)cout<<a[i][j];cout<<endl;}return;
}
void zmg(int ha,int la)//从坐标为ha,la的点出发,走迷宫
{if(flag==true)//如果已经找到了,直接返回 ,不加这句判断,虽然找到了,还是会无限循环,不知道什么原因 return;if(a[ha][la]=='#'||a[hb][lb]=='#')//起点或终点有一个不能通行 {flag=false;return;       }if(ha==hb&&la==lb)//到达B点 {flag=true;return;//找到一种走法就可以了,直接返回 }else//没到达B点,继续走 {a[ha][la]='#';//走过的点变为'#',相当于染色 int t;for(t=0;t<4;t++)//向上、右、下、左四个方向走 if(ha+x[t]>=0&&ha+x[t]<n&&la+y[t]>=0&&la+y[t]<n&&a[ha+x[t]][la+y[t]]=='.')zmg(ha+x[t],la+y[t]);}   return;
}
int main()
{cin>>zu;//输入几组数据 while(zu>0){cin>>n;//输入每组数据有n*n个input();cin>>ha>>la>>hb>>lb;flag=false;//对找到标志初始化,走迷宫前初始化为0,表示找不到 zmg(ha,la);//从A点出发 if(flag)cout<<"YES"<<endl;elsecout<<"NO"<<endl;zu--;}return 0;
}

信息奥赛一本通1215:迷宫相关推荐

  1. 信息奥赛一本通的递推练习

    信息奥赛一本通的递推练习 递推与动态规划 1313:位数问题 1314:过河卒 1194:移动路线 1196:踩方格 递推与动态规划 递推解决的问题中满足最优化原理的也是属于动态规划范畴 1313:位 ...

  2. 【算法•日更•第十二期】信息奥赛一本通1585:【例 1】Amount of Degrees题解

    废话不多说,直接上题: 1585: [例 1]Amount of Degrees 时间限制: 1000 ms         内存限制: 524288 KB 提交数: 130     通过数: 68 ...

  3. 信息奥赛一本通 三角形最佳路径问题 (1288) 题解

    信息奥赛一本通 三角形最佳路径问题 (1288) 题解 时间限制: 1000 ms 内存限制: 65536 KB 题目描述 如下所示的由正整数数字构成的三角形: 7 3 8 8 1 0 2 7 4 4 ...

  4. 2038:最大数位置(题目来源于信息奥赛一本通官网)

    2038:[例5.5]最大数位置 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 4876     通过数: 3175 [题目描述] 输入n 个整数,存放在数组a[ ...

  5. 信息奥赛一本通《走迷宫》

    3752:走迷宫 查看提交统计提示提问 总时间限制:  1000ms  内存限制:  65536kB 描述 一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走:有的格子是空地,可以走. 给定一个迷 ...

  6. HOJ 系统常用功能介绍 部署快速入门 c++ python java编程语言在线自动评测 信息奥赛一本通 USACO GESP 洛谷 蓝桥 CSP NOIP题库

    技术支持微 makytony 服务器配置需求 腾讯云 2H4G 5M 60GB 轻量应用服务器  承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛. 系统镜像选 ...

  7. 【算法•日更•第十四期】信息奥赛一本通1592:【例 1】国王题解

    废话不多说,直接上题: 1592:[例 1]国王 时间限制: 500 ms         内存限制: 65536 KB 提交数: 290     通过数: 111 [题目描述] 原题来自:SGU 2 ...

  8. 信息奥赛一本通1486: CH 6202 黑暗城堡 最短路径生成树计数

    1486:黑暗城堡 [题目描述] 知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 Di为如果所有的通道都被修建,第 i 号房间与第 1 ...

  9. 信息奥赛一本通(1325:【例7.4】 循环比赛日程表)

    1325:[例7.4] 循环比赛日程表 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 6257     通过数: 3483 [题目描述] 设有N个选手进行循环比赛 ...

最新文章

  1. 真能一快遮百丑?为什么要弃坑FastJson
  2. 2020ICPC·小米 网络选拔赛第一场 全部题解
  3. Vuex2.0+Vue2.0构建备忘录应用实践
  4. careercup-高等难度 18.5
  5. Linux C 数据结构——二叉树
  6. Windows批处理命令学习
  7. C/C++ _wcslwr_s 函数 – unicode 字符串大写转小写 - C语言零基础入门教程
  8. php curl 关闭tcp连接,BASH CURL:顺序运行时,请勿关闭请求之间的连接
  9. oracle 解死锁权限,讲解Oracle数据库中结束死锁进程的一般方法
  10. RocketMQ项目rocketmq-externals中rocketmq-console启动报错
  11. Minimum edit distance(levenshtein distance)(最小编辑距离)初探
  12. 进程间通信学习APUE学习---进程间通信(4)
  13. C语言调用多元函数,遗传算法C语言源代码(一元函数和二元函数)
  14. 使用js创建a标签下载文件
  15. 思维模型篇:数据化营销的六脉神剑
  16. 如何在vue中使用Cesium加载shp文件、wms服务、WMTS服务
  17. 【JavaScript设计模式】装饰器模式
  18. event mpm php,Apache下三种MPM模式:prefork,worker和event
  19. Epicor 客制化 - 常用对象
  20. Java 利用hutool工具实现导出excel并合并单元格

热门文章

  1. 外贸SOHO现在怎么结汇?
  2. 工作3年,被辞退了,这份测试人防优化指南你一定要知道...
  3. Linux 编译安装Nginx
  4. python写安卓游戏_Python 3d最新安卓版下载,Python 3d游戏最新安卓版下载 v1.0 - 游戏盒子下载站...
  5. 量化自我—趋势还是忽悠
  6. Mysql-高级查询语句
  7. zabbix监控服务器性能,使用zabbix监控apache性能
  8. ubuntu关闭防火墙命令
  9. Java日志——Log4j的使用及原理
  10. 24.WEB安全基础环境搭建 WIN7物理机的环境搭建