Hero In Maze

news/2025/2/12 5:15:18/

Hero In Maze

时间限制: 1000 Sec   内存限制: 64 MB

题目描述

500年前,Jesse是我国最卓越的剑客。他英俊潇洒,而且机智过人^_^。
突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中。Jesse听说这个消息已经是两天以后了,他知道公主在迷宫中还能坚持T天,他急忙赶到迷宫,开始到处寻找公主的下落。 时间一点一点的过去,Jesse还是无法找到公主。最后当他找到公主的时候,美丽的公主已经死了。从此Jesse郁郁寡欢,茶饭不思,一年后追随公主而去了。T_T 500年后的今天,Jesse托梦给你,希望你帮他判断一下当年他是否有机会在给定的时间内找到公主。
他会为你提供迷宫的地图以及所剩的时间T。请你判断他是否能救出心爱的公主。

输入

题目包括多组测试数据。 每组测试数据以三个整数N,M,T(0<n, m≤20, t>0)开头,分别代表迷宫的长和高,以及公主能坚持的天数。 紧接着有M行,N列字符,由".","*","P","S"组成。其中 "." 代表能够行走的空地。 "*" 代表墙壁,Jesse不能从此通过。 "P" 是公主所在的位置。 "S" 是Jesse的起始位置。 每个时间段里Jesse只能选择“上、下、左、右”任意一方向走一步。 输入以0 0 0结束。

输出

如果能在规定时间内救出公主输出“YES”,否则输出“NO”。

样例输入

4 4 10
....
....
....
S**P
0 0 0

样例输出

YES

解题思路

这道题用广搜,不能用深搜,深搜会时间超限。具体见代码:

#include <stdio.h>
#include <string.h>
struct note {int x, s, y;
}que[401];
int main() {char map[25][25];int t, n, m, p, q, vis[25][25];int next[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};while (scanf("%d %d %d", &n, &m, &t), n || m || t) {int tx, ty, head = 1, tail = 1, temp = 0;memset(vis, 0, sizeof(vis));for (int i = 1; i <= m; i++) {getchar();for (int j = 1; j <= n; j++) {scanf("%c", &map[i][j]);if (map[i][j] == 'S') {que[tail].x = i;que[tail].y = j;}if (map[i][j] == 'P') {p = i;q = j;}}}vis[que[tail].x][que[tail].y] = 1;que[tail++].s = 0;while (head < tail) {for (int k = 0; k < 4; k++) {tx = que[head].x + next[k][0];ty = que[head].y + next[k][1]; if (tx < 1 || ty < 1 || tx > m || ty > n)continue;if (!vis[tx][ty] && map[tx][ty] != '*') {vis[tx][ty] = 1;que[tail].x = tx;que[tail].y = ty;que[tail++].s = que[head].s + 1;}if (tx == p && ty == q) {temp = 1;break;}}if (temp)break;head++;}if (que[tail - 1].s <= t && temp)puts("YES");else puts("NO");}return 0;
}

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

相关文章

【Flutter】Hero 动画 ( Hero 实现径向动画 | Hero 组件 createRectTween 设置 )

文章目录 ◯、Hero 构造函数一、圆形方形组件二、创建页面 1 的组件 ( Hero 组件 1 )三、创建页面 2 的组件 ( Hero 组件 2 )四、完整代码示例五、相关资源 ◯、Hero 构造函数 Hero 构造函数 : /// 创建一个 Hero 组件 ;////// tag , child 参数不能为空 ; /// child 参数的值不…

Coursehero解锁Coursehero UnlockCoursehero查答案chegg查题下载

文章目录 Coursehero解锁Coursehero UnlockCoursehero查答案下载一、打开coursehero解锁网站二、购买Coursehero解锁账户三、登录Coursehero账户解锁 Coursehero解锁Coursehero UnlockCoursehero查答案下载 一、打开coursehero解锁网站 打开Coursehero解锁下载答案网站&#…

Flutter Hero 实现共享元素转场动画

系列文章 Flutter 旋转动画 — RotationTransitionFlutter 平移动画 — 4种实现方式Flutter 淡入淡出与逐渐出现动画Flutter 尺寸缩放、形状、颜色、阴影变换动画Flutter 列表Item动画 — AnimatedList实现Item左进左出、淡入淡出Flutter Hero 实现共享元素转场动画Flutter He…

【Flutter】Hero 动画 ( Hero 动画使用流程 | 创建 Hero 动画核心组件 | 创建源页面 | 创建目的页面 | 页面跳转 )

文章目录 ◯、Hero 动画简介一、创建 Hero 动画核心组件二、创建源页面三、创建目的页面四、页面跳转五、完整代码示例六、相关资源 ◯、Hero 动画简介 Hero Widget 动画效果 : Hero 通过动画从 源界面 运动到 目标界面 时 , 目标界面 透明度逐渐增加 , 淡入显示 ; Hero 是界面…

31、Flutter之Hero动画

Flutter Hero动画 Hero指的是可以在路由(页面)之间“飞行”的widget。使用Flutter的Hero widget创建hero动画。将 hero从一个路由飞到另一个路由。将 hero 的形状从圆形转换为矩形&#xff0c;同时将其从一个路由飞到另一个路由的过程中进行动画处理。Flutter中的Hero widget实…

hero登录器服务器列表为空,Hero引擎登陆器配置图文教程

1.首先启动配置器,如图: 2.游戏列表格式,也就是登录器左边显示的游戏区,保存为文本文件,例如GameList.txt 以下是设置4个区时登录器显示的样子,此文件需要保存在你网站的空间中,如上图 按照如下格式设置好你的游戏区后,并且配置好后启动登录器效果如下图: [电信区] ServerName=…

习题Hero

&#xff08;1&#xff09;定义一个游戏中Hero 英雄的类&#xff0c;在该类中定义英雄的名字&#xff0c; 生命值和等级3 个属性&#xff0c;定义一个构造函数完成对生命值和等级的初始化&#xff0c;分别赋初值为100&#xff0c;1。同时实现名字的输入和英雄信息的输出。 &am…

《Flutter 控件大全》第五十二个:Hero

如果你对Flutter还有疑问或者技术方面的疑惑,欢迎加入Flutter交流群(微信:laomengit)。同时也欢迎关注我的Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容。Flutter地址:http://laomengit.com 里面包含160多个组件的详细用法。Hero是我们常用的过渡动画,当用…