题目:

一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道。看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路。

输入格式

第一行输入两个整数 n和 m,表示这是一个 n×m的迷宫。接下来的输入一个 n行 m列的迷宫。其中 'S' 表示蒜头君的位置,'*'表示墙,蒜头君无法通过,'.'表示路,蒜头君可以通过'.'移动,'T'表示迷宫的出口(蒜头君每次只能移动到四个与他相邻的位置——上,下,左,右)。

输出格式

输出一个字符串,如果蒜头君可以逃出迷宫输出"yes",否则输出"no"。

数据范围

1≤n,m≤10。

Sample Input

3 4

S**.

..*.

***T

Sample Output

no

Sample Input 2

3 4

S**.

....

***T

Sample Output 2

yes

运用深度搜索。找到人的位置,因为只能从上下左右四个方向出发,所以每到一个点,先判断是否是终点,然后考虑这个点是否是在该棋盘上,是否能走,是否已经走过。最后如果能出去,则输出yes,否则输出no。

代码

#include

#include

#include

int n,m;

char road[15][15]; //棋盘

bool is_run[15][15]={false}; //是否已经走过

int dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}}; // 分别代表四个方向

bool out = false; //是否可以出去

using namespace std;

// 因为要从4个方向出发,所以需要判断下一个点是否在地图里

bool in_road(int x,int y){

return (0<=x&&x

}

void DFS(int x,int y){

if(road[x][y]=='T'){

//找到出口

out = true;

return;

}

if(!in_road(x,y)||road[x][y]=='*'||is_run[x][y]){

return;

}

is_run[x][y] = true;

for(int i=0;i<4;i++){

int tx = x+dir[i][0];

int ty = y+dir[i][1];

DFS(tx,ty);

}

return;

}

int main(){

int x,y;

cin>>n>>m;

for(int i=0;i

for(int j=0;j

cin>>road[i][j];

if(road[i][j]=='S'){

x = i;

y = j;

}

}

}

DFS(x,y);

if(out){

cout<

}else{

cout<

}

return 0;

}

运行结果:

编程题走迷宫_C++程序算法题----迷宫(一)相关推荐

  1. c语言笔试程序改错题,C语言笔试--程序改错题.doc

    C语言笔试--程序改错题 铜尖刮佛烁休凹汝宰或贷呵茎丑傅汞访沾犹扯视自女垂桶癌苞详阴疾澜赏斑萝厩蕴莽钢邹叶疹单樊捣前烬吊崖匝企送跃赫鳃投媳暴棺蹲后牡膊谗甲柜侍叠磐燥陷懦昧颈芝矢肪灌就冷沽梗挑评保崎士羡 ...

  2. a*算法流程图_学好流程控制结构轻松应对高考数学程序算法题

    近年来高考数学题目中出现了越来越多的程序框图(程序算法)相关题目,一方面使用流程分析进行计算,另一方面需要将计算结果使用数学公式进行求解.高考数学程序题,基本都属于简单类型题目,主要考察考生多流程控制 ...

  3. java经典100例算法题_10道java经典算法题,每一题都能帮你提升java水平!

    JAVA经典算法题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子 ...

  4. 算法题库 java实现_LeetCode算法题-Most Common Word(Java实现)

    这是悦乐书的第321次更新,第342篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第190题(顺位题号是819).给定一个段落和一组禁止词,返回不在禁止词列表中的最常用词 ...

  5. java的简单算法题_[2]十道算法题【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  6. c语言程序改错题步骤,C语言程序改错题库

    3). y+=1.0/(2*i-3); ━━━━━━━━━━━━━━━━━━ 一.程序改错 共138题 (共计1380分) ━━━━━━━━━━━━━━━━━━ 第2题 (10.0分) /*----- ...

  7. c语言随机prim算法的迷宫生成,Prim算法生成迷宫

    初始化地图 function initMaze(r,c){ let row = new Array(2 * r + 1) for(let i = 0; i < row.length; i++){ ...

  8. 实验三、prim算法生成迷宫,A*算法解迷宫(实验准备)

    目录 实验要求: 算法简介: prim算法: A*算法: 实验要求: 该项目的主要要求是:首先生成一个迷宫,要求随机生成.而生成迷宫有深度优先算法.prim算法.递归分割算法等.老师说建议使用prim ...

  9. [迷宫中的算法实践]迷宫生成算法——Prim算法

    普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)), ...

最新文章

  1. CMD命令,常驻内存的与外部的介绍 还有CMD格式化
  2. 镇海区工业机器人与自动化设备_镇海区开展首期“工业机器人操作实训班”蓄力智能制造产业发展...
  3. Kubernetes + CRI + Kata + Firecracker
  4. TPC-W安装与配置(威斯康星大学Java版)
  5. less加管道tail_linux中cat、more、less、tail、head命令的区别
  6. [BUUCTF-pwn]——wustctf2020_closed
  7. Swift - UIBezierPath
  8. 世界互联网大会发布15项领先科技成果
  9. grunt + compass
  10. Python Flask Web 第一课 —— 基本概念和程序的基本结构
  11. EXCEL科学计数法转为文本格式
  12. 数据仓库之内容建设(架构、分层、主数据、指标体系、词根、血缘)
  13. Python常用字符编码
  14. 番茄时钟(提升专注力,减少中断)- 番茄工作法
  15. 字节跳动将双月OKR调整为季度;马斯克批OpenAI违背初心:被微软控制,只顾赚钱;苹果上新348元省电保护膜|极客头条...
  16. 【论文分享】Sequence Directed Hybrid Fuzzing
  17. 【博学谷学习记录】超强总结,用心分享|产品经理需求分析方法简析
  18. Android 长按APP图标弹出快捷方式(shortcuts)
  19. 信息孤岛的由来,以及如何改善
  20. 计算机绘图期末试题,21年5月份154北理工《机械制图2》期末试卷

热门文章

  1. python中的下标索引
  2. xshell 打开文件跳转到最后_如何在Xshell中打开Xftp
  3. Python - Excel文件与CSV文件相互转化
  4. 哈尔滨理工C语言程序设计精髓_【注意啦】哈尔滨工业大学2020考研计算机专业课调整,难度提升!...
  5. 稀疏大模型简述:从MoE、Sparse Attention到GLaM
  6. 图谱实战 | 京东商品图谱构建与实体对齐
  7. 论文浅尝 - AAAI2021 | 基于对比学习的三元组生成式抽取方法
  8. 国科金:共融机器人基础理论与关键技术研究重大研究计划
  9. [Codevs] 1014 棋盘染色
  10. 转:日志组件logback的介绍及配置使用方法