AOJ 6.Hero In Maze

简单的最短路 BFS DFS都可以实现(BFS应该会更快一点吧)

其中输入的N、M、T中,N是列,M是行,而不是和大多数题目一样,N是行,M是列

另外,类中不要乱放常量,类中不要直接为类变量赋初值(不是所有编译器都承认貌似~)

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 #define REP(n) for(int o=0;o<n;o++)
 7 
 8 const int maxn = 25;
 9 const int delta[4] = {0,0,1,-1};
10 
11 class LOVE {
12 private:
13     int N,M,T;
14     int x1,y1,x2,y2;
15     bool visited[maxn][maxn];//是否已访问过该位置
16     char map[maxn][maxn];//地图
17     int ans;//结果
18 
19 
20     void dfs(int x,int y,int l) {
21         if(x < 0 || y < 0 || x >= M || y >= N ||
22             visited[x][y] == true || map[x][y] == '*')
23             return;
24         if(x == x2&&y == y2)
25             ans = l;
26 
27         visited[x][y] = true;
28 
29         for(int i = 0;i < 4;i++)
30             dfs(x + delta[i],y + delta[3 - i],l + 1);
31 
32     }
33 
34 public:
35     bool Do() {
36         scanf("%d%d%d",&N,&M,&T);
37         //测试数据结束
38         if(N == 0 && M == 0 && T == 0)
39             return false;
40         //输入地图
41         for(int i = 0;i < M;i++) {
42             for(int j = 0;j < N;j++) {
43                 char temp;
44                 scanf("\n%c\n",&temp);
45                 if(temp == 'S') {
46                     x1 = i;
47                     y1 = j;
48                     temp = '.';
49                 }
50                 if(temp == 'P') {
51                     x2 = i;
52                     y2 = j;
53                     temp = '.';
54                 }
55                 map[i][j] = temp;
56             }
57         }
58 
59         //输出地图
60         /*
61         for(int i = 0;i < M;i++) {
62             for(int j = 0;j < N;j++)
63                 printf("%c",map[i][j]);
64             printf("\n");
65         }
66         printf("\n");
67         */
68 
69         //初始化
70         ans = -1;
71         memset(visited,false,sizeof(visited));
72         //dfs寻求最短路(用bfs应该会更快点,不过数据小,就不改了)
73         dfs(x1,y1,0);
74 
75         /*
76         for(int i = 0;i < M;i++) {
77             for(int j = 0;j < N;j++)
78                 printf("%d",visited[i][j]);
79             printf("\n");
80         }
81         printf("\n");
82         */
83 
84         printf("%s\n",ans == -1 || ans > T ? "NO" : "YES");
85 
86         return true;
87     }
88 };
89 
90 
91 
92 int main() {
93     LOVE LIVE;
94     while(LIVE.Do());
95     return 0;
96 }

 

转载于:https://www.cnblogs.com/ohyee/p/5246445.html

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

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

相关文章

LeetCode 2267. 检查是否有合法括号字符串路径(BFS)

文章目录1. 题目2. 解题1. 题目 一个括号字符串是一个 非空 且只包含 ( 和 ) 的字符串。 如果下面 任意 条件为 真 &#xff0c;那么这个括号字符串就是 合法的 。 字符串是 () 。字符串可以表示为 AB&#xff08;A 连接 B&#xff09;&#xff0c;A 和 B 都是合法括号序列。…

python网络爬虫系列(三)——cookie的原理、保存与加载

一、什么是cookie&#xff1f; 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。 cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当…

LeetCode 2266. 统计打字方案数(动态规划)

文章目录1. 题目2. 解题1. 题目 Alice 在给 Bob 用手机打字。数字到字母的 对应 如下图所示。 为了 打出 一个字母&#xff0c;Alice 需要 按 对应字母 i 次&#xff0c;i 是该字母在这个按键上所处的位置。 比方说&#xff0c;为了按出字母 s &#xff0c;Alice 需要按 7 四…

大学毕业4年-回顾和总结(2)-钱,收入和支出

过年回家&#xff0c;长辈最喜欢问两件事。第一件事&#xff0c;谈朋友没有啊。第二件事&#xff0c;现在一个月搞多少钱。 如果你和他们说&#xff0c;一个月工资是1万&#xff0c;那么他们立刻认为&#xff0c;你现在手上应该有十多万了。 上班族听了&#xff0c;心里…

python网络爬虫系列(四)——requests模块

requests模块 知识点&#xff1a; 掌握 headers参数的使用掌握 发送带参数的请求掌握 headers中携带cookie掌握 cookies参数的使用掌握 cookieJar的转换方法掌握 超时参数timeout的使用掌握 代理ip参数proxies的使用掌握 使用verify参数忽略CA证书掌握 requests模块发送post请…

PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)

文章目录1. 窗口绘图类1.1 QPainter绘制文字绘制点1.2 QPen1.3 QBrush1.4 QPixmap2. 拖拽与剪贴板2.1 拖拽2.2 剪贴板 QClipboard3. 日历与时间3.1 QCalendar3.2 QDateTimeEdit4. 菜单栏、工具栏、状态栏4.1 菜单栏 QMenuBar4.2 工具栏 QToolBar4.3 状态栏 QStatusBar5. QPrint…

python网络爬虫系列(0)——爬虫概述 http协议复习

一、爬虫概述 知识点&#xff1a; 了解 爬虫的概念 了解 爬虫的作用 了解 爬虫的分类 掌握 爬虫的流程 1. 爬虫的概念 模拟浏览器&#xff0c;发送请求&#xff0c;获取响应 网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff09;就是模拟客户端(主要指…

使用TFHpple解析html

https://github.com/topfunky/hpple 前期准备工作 引入静态库文件 添加库文件的 header search paths(注意,必须选中 All) 将从github上下载的源码包拖入工程当中 准备工作结束 使用详情 我们来解析网址 http://www.cnblogs.com/YouXianMing/ 中的title标签哦. 思路是这样子的:…

LeetCode 2269. 找到一个数字的 K 美丽值

文章目录1. 题目2. 解题1. 题目 一个整数 num 的 k 美丽值定义为 num 中符合以下条件的 子字符串 数目&#xff1a; 子字符串长度为 k 。子字符串能整除 num 。 给你整数 num 和 k &#xff0c;请你返回 num 的 k 美丽值。 注意&#xff1a; 允许有 前缀 0 。 0 不能整除任…

SQLite3基本使用从shell到python

SQLite是一个轻量级的关系型数据库&#xff0c;在訪问量不超过10万PV的中小站点中使用绰绰有余。并且使用方便&#xff0c;接口简单&#xff0c;以下从命令行和python接口双方面介绍SQLite3的基本操作。 在linux终端中&#xff0c;通过 sqlite3 a.db 打开a.db数据库&#xff0c…

LeetCode 2270. 分割数组的方案数(前缀和)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始长度为 n 的整数数组 nums 。 如果以下描述为真&#xff0c;那么 nums 在下标 i 处有一个 合法的分割 &#xff1a; 前 i 1 个元素的和 大于等于 剩下的 n - i - 1 个元素的和。下标 i 的右边 至少有一个 元素&#xff…

python网络爬虫系列(五)——数据提取 jsonpath模块

一、数据提取概述 知识点 了解 响应内容的分类了解 xml和html的区别 1. 响应内容的分类 在发送请求获取响应之后&#xff0c;可能存在多种不同类型的响应内容&#xff1b;而且很多时候&#xff0c;我们只需要响应内容中的一部分数据 结构化的响应内容 json字符串 可以使用re、…

Java学习心得

在上学期的学习中对GUI设计方面的只是已经有了一些了解&#xff0c;但还是有所欠缺&#xff0c;寒假自己又自学学了一些GUI设计和其他方面的知识。在本学期的学习中我感觉很有帮助&#xff0c;所以在本学期的学习中我会学习某一章的内容的时候&#xff0c;我会积极听讲&#xf…

LeetCode 2271. 毯子覆盖的最多白色砖块数(前缀和+二分查找)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 tiles &#xff0c;其中 tiles[i] [li, ri] &#xff0c;表示所有在 li < j < ri 之间的每个瓷砖位置 j 都被涂成了白色。 同时给你一个整数 carpetLen &#xff0c;表示可以放在 任何位置 的一块毯子。 请你返回…

Nimbus三Storm源码分析--Nimbus启动过程

Nimbus server, 首先从启动命令开始, 同样是使用storm命令"storm nimbus”来启动看下源码, 此处和上面client不同, jvmtype"-server", 最终调用"backtype.storm.daemon.nimbus"的mainnimbus是用clojure实现的, 但是clojure是基于JVM的, 所以在最终发布…

python网络爬虫系列(六)——数据提取 lxml模块

一、数据提取-lxml模块 知识点 了解 lxml模块和xpath语法的关系了解 lxml模块的使用场景了解 lxml模块的安装了解 谷歌浏览器xpath helper插件的安装和使用掌握 xpath语法-基础节点选择语法掌握 xpath语法-节点修饰语法掌握 xpath语法-其他常用语法掌握 lxml模块中使用xpath语…

LeetCode 2273. 移除字母异位词后的结果数组

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的字符串 words &#xff0c;其中 words[i] 由小写英文字符组成。 在一步操作中&#xff0c;需要选出任一下标 i &#xff0c;从 words 中 删除 words[i] 。其中下标 i 需要同时满足下述两个条件&#xff1a; 0 < i …

python网络爬虫系列(七)——selenium的介绍 selenium定位获取标签对象并提取数据 selenium的其它使用方法

一、selenium的介绍 知识点&#xff1a; 了解 selenium的工作原理了解 selenium以及chromedriver的安装掌握 标签对象click点击以及send_keys输入 1. selenium运行效果展示 Selenium是一个Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的&#xff0c;Seleniu…

LeetCode 2274. 不含特殊楼层的最大连续楼层数

文章目录1. 题目2. 解题1. 题目 Alice 管理着一家公司&#xff0c;并租用大楼的部分楼层作为办公空间。 Alice 决定将一些楼层作为 特殊楼层 &#xff0c;仅用于放松。 给你两个整数 bottom 和 top &#xff0c;表示 Alice 租用了从 bottom 到 top&#xff08;含 bottom 和 t…

python网络爬虫系列(八)——常见的反爬手段和解决方法

常见的反爬手段和解决思路 学习目标 了解 服务器反爬的原因了解 服务器常反什么样的爬虫了解 反爬虫领域常见的一些概念了解 反爬的三个方向了解 常见基于身份识别进行反爬了解 常见基于爬虫行为进行反爬了解 常见基于数据加密进行反爬 1 服务器反爬的原因 爬虫占总PV(PV是指…