【HDU - 2102】A计划 (麻烦一点的bfs)

题干:

可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。 
现据密探所报,公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到的位置是墙的话,那骑士们就会被撞死。骑士们在一层中只能前后左右移动,每移动一格花1时刻。层间的移动只能通过时空传输机,且不需要任何时间。

Input

输入的第一行C表示共有C个测试数据,每个测试数据的前一行有三个整数N,M,T。 N,M迷宫的大小N*M(1 <= N,M <=10)。T如上所意。接下去的前N*M表示迷宫的第一层的布置情况,后N*M表示迷宫第二层的布置情况。

Output

如果骑士们能够在T时刻能找到公主就输出“YES”,否则输出“NO”。

Sample Input

1
5 5 14
S*#*.
.#...
.....
****.
...#...*.P
#.*..
***..
...*.
*.#..

Sample Output

YES

解题报告:

    简单的bfs,只是需要判断一下两层的对应位置上都是 ' # ' 这种特殊情况就可以了。这种情况不加的话会wa的。

AC代码:

#include<cstdio>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
struct Node {int x,y;int t;int deep;Node(){}Node(int deep,int x,int y,int t):deep(deep),x(x),y(y),t(t){} 
};
int n,m,k;
bool vis[2][15][15];//0表示第一层,1表示第二层 
char maze[2][15][15];
int nx[4] = {0,1,0,-1};
int ny[4] = {1,0,-1,0};
bool bfs() {memset(vis,0,sizeof(vis));	queue<Node> q;q.push((Node(0,1,1,0)));vis[0][1][1]=1;Node cur;	while(q.size()) {cur = q.front();q.pop();if(maze[cur.deep][cur.x][cur.y] == 'P') {if(cur.t <=k) return 1;else return 0;}int tx,ty;for(int i = 0; i<4; i++) {tx = cur.x+nx[i];ty = cur.y+ny[i];if(maze[cur.deep][tx][ty] == '*' || vis[cur.deep][tx][ty] == 1) continue;if(tx < 1 || tx > n || ty < 1 || ty > m) continue;vis[cur.deep][tx][ty] = 1;if(maze[cur.deep][tx][ty] == '#' && maze[!cur.deep][tx][ty] != '*' && vis[!cur.deep][tx][ty] == 0)  {vis[!cur.deep][tx][ty] = 1;q.push(Node(!cur.deep,tx,ty,cur.t+1));}else if(maze[cur.deep][tx][ty]=='.' || maze[cur.deep][tx][ty]=='P') {q.push(Node(cur.deep,tx,ty,cur.t+1));}}}return 0;
}
int main()
{int t;cin>>t;while(t--) {scanf("%d%d%d",&n,&m,&k);for(int i = 1; i<=n; i++) {scanf("%s",maze[0][i]+1);}for(int i = 1; i<=n; i++) {scanf("%s",maze[1][i]+1);}for(int i = 1; i<=n; i++) {for(int j = 1; j<=m; j++) {if(maze[0][i][j] == '#' && maze[1][i][j] == '#') {maze[0][i][j] = maze[1][i][j] = '*';}}}if(bfs()) printf("YES\n");else printf("NO\n");}return 0 ;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu cpp与mysql连接_linux(ubuntu)下C++访问mysql数据库

向表中插入(删除)一条数据 #include #include using namespace std;int main(int argc, char* argv[]){//准备mysql的访问结构MYSQL mysql;mysql_init( &mysql );mysql_real_connect(&mysql,"192.168.16.114",//要访问数据库的IP地址"root",//用户…

渤海船舶职业学院计算机应用公司,渤海船舶职业学院

2016年招生章程已经公布&#xff0c;出国留学网高考网为大家提供2016年渤海船舶职业学院招生章程已公布&#xff0c;更多高考招生信息请关注我们网站的更新!渤海船舶职业学院2016年招生章程一、学校自然情况说明学校全称&#xff1a;渤海船舶职业学院办学地点及校址&#xff1a…

C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)

O1优化会消耗少多的编译时间&#xff0c;它主要对代码的分支&#xff0c;常量以及表达式等进行优化。 O2会尝试更多的寄存器级的优化以及指令级的优化&#xff0c;它会在编译期间占用更多的内存和编译时间。 O3在O2的基础上进行更多的优化&#xff0c;例如使用伪寄存器网络&a…

nginx pdo_mysql_lnmp环境,安装PHP7的扩展pdo_mysql报错的问题?

环境信息&#xff1a;centos7.4 php7.2 mysql5.71.php是编译安装的2.MySQL是用rpm安装的mysql-community-client-5.7.23-1.el7.x86_64.rpmmysql-community-common-5.7.23-1.el7.x86_64.rpmmysql-community-devel-5.7.23-1.el7.x86_64.rpmmysql-community-embedded-5.7.23-1.el7…

【qduoj - 1010】easy problem(巧妙的枚举)

题干&#xff1a; 给你一个数字N&#xff0c;N的范围是1~1000000&#xff0c;求一个最小的正整数M&#xff0c;这个数字M的各个位的数字加上它本身之和恰好为N。当然&#xff0c;如果没有解&#xff0c;输出0。 输入 输入数据由多组数据组成&#xff0c;每行由一个数字N组成…

电大mysql实验作业_成教作业网提供国开电大 MySQl数据库应用 实验训练4答案

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼实验训练4&#xff1a;数据库系统维护实验目的&#xff1a;基于实验1创建的汽车用品网上商城&#xff0c;练习创建用户、权限管理&#xff0c;数据库备份与恢复方法&#xff0c;数据导出导入的方法&#xff0c;体会数据库系统维护的…

小学教师计算机国培培训总结,小学教师国培培训心得体会

短暂而又漫长的国培结束了&#xff0c;在这三个月里&#xff0c;收获很大&#xff0c;但最大的收获是思想的转变&#xff0c;此次培训活动安排分三个阶段&#xff1a;第一阶段&#xff0c;理论学习(1 0天);第二阶段&#xff0c;教学实践 (基地学习50天);第三阶段&#xff0c;集…

【qduoj - 1012】反转数字(模拟,水题)

题干&#xff1a; 反转数字 描述 输入一个 c 语言 4字节 int 范围内的数字&#xff0c;输出它反转后的数字。比如12345反转后是54321&#xff0c;-12345反转后是-54321。如果反转后的数字不在 int 范围内就输出0&#xff1b; 输入 每行一个 int 范围内的数字&#xff0c;以 …

mysql group 条件_mysql 的group by 满足的规则要求:

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。本文链接&#xff1a;https://blog.csdn.net/u011066470/article/details/97291377————————————————GROUP BY满足的规则:所有sele…

计算机网络技术局域网作业,计算机网络作业局域网搭建注意事项.ppt

计算机网络作业局域网搭建注意事项计算机网络基础与应用技术 第6章 局域网技术 6.1 局域网概述 6.1.1 局域网的定义与特点 6.1.1 局域网的定义与特点 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.3 组建对等网 6.1.3 组…

【qduoj - 1011】数组中出现最多的元素(巧妙方法 或 排序 或 map)

题干&#xff1a; 描述 给你一个数组&#xff0c;输出里面出现超过1/2的元素。保证有且只有一个解。 输入 第一行是一个整数&#xff0c;表示测试数据的组数 n&#xff0c;n < 1000万 之后每一行都是一个整数。 输出 输出出现超过1/2的那个数字。 输入样例 1 5 1 1 …

centos mysql 5.6 源码_Centos7环境中mysql-5.6.39 源码安装

1、编译安装MySQL需要一些必备的组件&#xff0c;可以直接使用yum安装即可yum -y install cmake ncurses-devel gcc-c2 创建 Mysql用户useradd mysql3 分别给mysql创建程序安装目录和数据存储目录&#xff0c;这里将mysql安装在/opt下&#xff0c;数据存储在 /data/mysql下mkdi…

2019年9月全国计算机等级考试报名,关于2019年9月全国计算机等级考试报名的通知...

关于2019年9月全国计算机等级考试报名的通知2019年9月全国计算机等级考试报名工作即将开始&#xff0c;根据教育部考试中心和安徽省教育招生考试院的要求&#xff0c;学生在网上报名及缴费。现将2019年9月全国计算机等级考试报名工作安排如下&#xff1a;一、网上报名时间2019年…

【ACM算法讲堂之 - 计算几何基础】:【点积和叉积】(附一些模板)

计算几何是算法竞赛的一大块&#xff0c;而叉积是计算机和的基础。 首先叉积是计算说向量之间的叉积&#xff0c;那么我们可以这样定义向量&#xff0c;以及向量的运算符重载。 struct Point {double x,y;Point(double x0,double y0):x(x),y(y) {} }; typedef Point Vector; V…

mysql libstdc .so.6_编译安装mysql报错 ./mysqld: /usr/lib64/libstdc++.so.6:

我遇到这个问题的时候是在连接库的时候出现的问题&#xff0c;而且不是在编译的时候出现的&#xff0c;实在运行的时候才 报错&#xff0c;出现这种问题就是因为编译库的编译器和编译当前程序的编译器版本是不一样的&#xff0c;在具体一点就是因为&#xff0c;当前程序的编译器…

极限脱出 量子计算机,《极限脱出3:零时困境》难点解密攻略 剧情通关密码一览...

《极限脱出3&#xff1a;零时困境》这款解密游戏很多时候会卡住&#xff0c;如何通关呢&#xff1f;下面小编就给大家分享一下《极限脱出3&#xff1a;零时困境》中几个难点解密&#xff0c;需要过关密码的朋友可以收藏一下哦。游戏过程中经常会卡在三处&#xff1a;1.玩家发现…

【qduoj】C语言课程设计_约瑟夫问题

题干&#xff1a; 描述 有n只猴子&#xff0c;按顺时针方向围成一圈选大王&#xff08;编号从1到n&#xff09;&#xff0c;从第1号开始报数&#xff0c;一直数到m&#xff0c;数到m的猴子退出圈外&#xff0c;剩下的猴子再接着从1开始报数。就这样&#xff0c;直到圈内只剩下…

mysql缓存淘汰机制_聊聊缓存淘汰算法-LRU 实现原理

前言我们常用缓存提升数据查询速度&#xff0c;由于缓存容量有限&#xff0c;当缓存容量到达上限&#xff0c;就需要删除部分数据挪出空间&#xff0c;这样新数据才可以添加进来。缓存数据不能随机删除&#xff0c;一般情况下我们需要根据某种算法删除缓存数据。常用淘汰算法有…

【qduoj】C语言_求整数各位数之和

题干&#xff1a; 描述 输入一个正整数r&#xff08;0<r<10&#xff09;&#xff0c;做r次下列运算&#xff1a;输入一个整数&#xff0c;输出它的位数及各位数之和。 输入 同上 输出 同上 输入样例 1 3 123456 -100 99 输出样例 1 number6,sum21 number3,sum1 n…

三个月计算机培训班,三个月复盘:学完两个设计软件,并开始学画画

从4月1日开始明确目标&#xff0c;到6月30日&#xff0c;整整三个月的时间&#xff0c;我一直在努力前行。其中有多次的调整&#xff0c;但整体方向不变。来梳理一下这三个月所做的事&#xff1a;4.1-5.26 完成PS学习(75课)5.27-6.26 完成CDR学习(65课)5.27 从零基础开始学习画…