DFS与DFS迷宫问题
一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道。
看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路。
输入格式
第一行输入两个整数n 和 m,表示这是一个 n×m 的迷宫。
接下来的输入一个 n 行 m 列的迷宫。其中 'S'
表示蒜头君的位置,'*'
表示墙,蒜头君无法通过,'.'
表示路,蒜头君可以通过'.'
移动,'T'
表示迷宫的出口(蒜头君每次只能移动到四个与他相邻的位置——上,下,左,右)。
输出格式
输出一个字符串,如果蒜头君可以逃出迷宫输出"yes"
,否则输出"no"
。
数据范围
1≤n,m≤10。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
3 4
S**.
..*.
***T
样例输出
no
样例输入
3 4
S**.
....
***T
样例输出
yes
1 #include<iostream>
2 using namespace std;
3 int n,m,beginx,beginy;
4 bool mark[11][11]={false};
5 char map[11][11];
6 int x[4]={0,-1,1,0},y[4]={-1,0,0,1};
7 bool flag=false;
8 bool check(int r,int c){
9 if (r>=0&&r<n&&c>=0&&c<m)
10 return true;
11 return false;
12 }
13 void DFS(int r,int c){
14
15 int newx,newy;
16 for (int i = 0; i < 4; i++)
17 {
18 newx = r +x[i];
19 newy = c + y[i];
20 if (check(newx,newy)&&!mark[newx][newy])
21 {
22 mark[newx][newy]=true;
23 if (map[newx][newy]=='T')
24 {
25 flag=true;
26 cout<<"yes"<<endl;
27 return;
28 }
29 if (map[newx][newy]=='.')
30 {
31 mark[newx][newy]=true;
32 DFS(newx,newy);
33 // cout<<"newx = "<<newx<<" newy ="<<newy<<endl;
34 }
35 }
36 }
37 }
38 int main(){
39 cin>>n>>m;
40 for (int i = 0; i < n; i++)
41 {
42 cin>>map[i];
43 for (int j = 0; j < m; j++)
44 {
45 if (map[i][j]=='S')
46 {
47 beginx= i;
48 beginy=j;
49 }
50 }
51 }
52 mark[beginx][beginy];
53 DFS(beginx,beginy);
54 if (!flag)
55 {
56 cout<<"no"<<endl;
57 }
58
59 }
DFS与DFS迷宫问题的更多相关文章
- (DFS)P1605 迷宫 洛谷
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- dfs题型二(迷宫问题)
取自:<王道论坛计算机考研机试指南>6.5节 例 6.7 Temple of the bone(九度 OJ 1461)时间限制:1 秒 内存限制:32 兆 特殊判题:否题目描述:The d ...
- 【DFS】NYOJ-82 迷宫寻宝(一)-条件迷宫问题
[题目链接:NYOJ-82] #include<iostream> #include<cstring> using namespace std; struct node{ in ...
- 看似不是dfs的dfs HDU-1455
Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- 走迷宫(DFS)
题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2449&cid=1181 目前dfs 里的递归还是不很懂,AC代码如下: #incl ...
- HDOJ(1010)DFS+剪枝
Tempter of the Bone http://acm.hdu.edu.cn/showproblem.php?pid=1010 #include <stdio.h> #include ...
- DFS(深度优先)算法编程实践
DFS定义 DFS(Depth-First-Search)深度优先搜索算法,是搜索算法的一种.是一种在开发爬虫早期使用较多的方法.它的目的是要达到被搜索结构的叶结点 . 特点 每次深度优先搜索的结果必 ...
- 关于dfs
DFS 关于dfs,我的理解就是深度搜索,找到所有与入口相连的路径,可以用于迷宫求出口,利用递归的思想,进行搜索返回所有值. 比如,给你两个值分别表示迷宫的长和宽,迷宫有一个入口,一个出口,判断能否从 ...
- 搜索入门_简单搜索bfs dfs大杂烩
dfs题大杂烩 棋盘问题 POJ - 1321 和经典的八皇后问题一样. 给你一个棋盘,只有#区域可以放棋子,同时同一行和同一列只能有一个棋子. 问你放k个棋子有多少种方案. 很明显,这是搜索题. ...
随机推荐
- 从零开始实现简单 RPC 框架 2:扩展利器 SPI
RPC 框架有很多可扩展的地方,如:序列化类型.压缩类型.负载均衡类型.注册中心类型等等. 假设框架提供的注册中心只有zookeeper,但是使用者想用Eureka,修改框架以支持使用者的需求显然不是 ...
- 微信SDK的使用
一.导入依赖 <!--微信支付--> <dependency> <groupId>com.github.wxpay</groupId> <arti ...
- 服务启动shell脚本
#!/bin/sh JarDir=`pwd` do_start() { echo "pandora-login start ..." nohup java -jar -Xmn256 ...
- TreeUtil.java
package com.infish.util; import java.lang.reflect.Method; import java.util.ArrayList; import java.ut ...
- Qt项目简易开发原理及常见问题解决
一.资源下载地址 https://www.aliyundrive.com/s/jBU2wBS8poH 本项目路径:项目->免费->QtDev 注释:为了方便qt全功能开发,QtDev中包含 ...
- Git(12)-- Git 分支 - 分支简介
@ 目录 1.分支简介 1.1.初始化并首次提交 首次提交对象及其树结构: git 的 cat-file 的命令用法: 1.2.修改并第二次提交 第二次提交对象及其树结构: 1.3.修改并第三次提交 ...
- noip16
<凉宫春日的忧郁>专场 T1 考试的时候连题面都没看懂,都没往图论这方面想,更别提最小生成树. 正解: 最小生成树prim,好像是什么欧几里得生成树,寒假时候的东西了,我直接找的blog看 ...
- noip 模拟9 题解
rp++==文化课报废 考试经过 先看T1,有被1e12吓到,但根据经验这很可能是水题,经过一番观察后直接打表,似乎看出了规律,觉得应该有了正解,写完之后顺利过掉大样例,但似乎时间稍慢一点,写上快读交 ...
- docker部署Redis6-0-6
下载redis.conf配置 下载地址: http://download.redis.io/redis-stable/redis.conf 拉取docker镜像 docker pull redis:6 ...
- 查询liunx上磁盘占用情况
查询挂载盘磁盘情况 df -h 查询指定目录下的文件夹内存占用情况 du -hs /*