总时间限制: 
1000ms
内存限制: 
65536kB
描述
一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。
给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。
输入
第一行是两个整数,R和C,代表迷宫的长和宽。( 1<= R,C <= 40)
接下来是R行,每行C个字符,代表整个迷宫。
空地格子用'.'表示,有障碍物的格子用'#'表示。
迷宫左上角和右下角都是'.'。
输出
输出从左上角走到右下角至少要经过多少步(即至少要经过多少个空地格子)。计算步数要包括起点和终点。
样例输入
5 5
..###
#....
#.#.#
#.#.#
#.#..
样例输出
9

、、虽然水了点但为了为走上歧途的同学解答还是写了题解,这大概是第一次写dfs的题解。。。。。

首先看到这题的第一反应不应该是dfs(反正我第一个想到的是dp)不过既然要dfs的那就好好看看吧首先发现数据十分水所以不要记忆化不要记忆化的代码是令人愉悦的所以就开动了首先是状态数组,bool b【】【】把‘’0‘’作为‘’墙‘’在输入时直接处理好然后我们发现可以上下左右乱爬那写四个if????我有点恐惧,所以最好使用方向数组mapp【】【】做好可爱的回溯后就是简单的优化比如当我们发现k(目前步数)已经大于记录的最小步了那就直接give out it!所以。。。。上代码吧
#include<bits/stdc++.h>
using namespace std;
char c;
int ans=0x7fffff,m,n;
bool b[1000][1000];
int mapp[3][5];
void dfs(int x,int y,int k)
{if(x==m&&y==n){ans=min(ans,k);return ;}if(k>ans)return ;for(int i=1;i<=4;i++){if(b[x+mapp[1][i]][y+mapp[2][i]]==1){b[x+mapp[1][i]][y+mapp[2][i]]=0;dfs(x+mapp[1][i],y+mapp[2][i],k+1);b[x+mapp[1][i]][y+mapp[2][i]]=1;}}
}
int main()
{cin>>m>>n;mapp[1][1]=-1;mapp[2][1]=0;mapp[1][2]=1;mapp[2][2]=0;mapp[1][3]=0;mapp[2][3]=1;mapp[1][4]=0;mapp[2][4]=-1;for(int i=1;i<=m;i++)for(int j=1;j<=n;j++){cin>>c;if(c=='#')b[i][j]=0;elseb[i][j]=1;}dfs(1,1,1);  cout<<ans;
}

//终于水完这题了。。。

//恩,那就这样吧。。。。(表示懒,不想记忆化)

 

转载于:https://www.cnblogs.com/crazily/p/9689041.html

2753:走迷宫(dfs+初剪)//可以说是很水了。。。相关推荐

  1. 信息学奥赛一本通 1252:走迷宫 | OpenJudge NOI 2.5 2753:走迷宫

    [题目链接] ybt 1252:走迷宫 OpenJudge NOI 2.5 2753:走迷宫 [题目考点] 1. 广搜 迷宫问题 [解题思路] 设结构体类型的结点保存位置以及步数,队列中保存的是该结构 ...

  2. K - 老鼠走迷宫(DFS)

    Description 现在一只老鼠被困在了迷宫里!你需要判断老鼠能否走出迷宫. 老鼠只能向上下左右四个方向移动.我们认为只要老鼠走到了迷宫的边界即算走出迷宫. Input 第一行输入两个整数 n, ...

  3. 算法:老鼠走迷宫问题

    算法:老鼠走迷宫问题(初) [写在前面] 老鼠走迷宫问题的递归实现,是对递归思想的一种应用. [问题描述] 给定一个二维数组,数组中2表示墙壁,0表示通路,由此数组可展示为一个迷宫图.给定入口位置和出 ...

  4. DFS(入门题,走迷宫)

    1185: 走迷宫 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 383 Solved: 155 [Submit][Status][Web Board] ...

  5. 【华为机试】【校招】【Java】机器人走迷宫(DFS)

    ■ 题目描述 [机器人走迷宫] 机器人走一个迷宫,给出迷宫的x和y(x*y的迷宫)并且迷宫中有障碍物,输入k表示障碍物有k个,并且会将障碍物的坐标挨个输入. 机器人从0,0的位置走到x,y的位置并且只 ...

  6. 用Python写一个走迷宫的小程序(图形化:matplotlib,dfs,prim)

    不要脸的放到了Github上面,嘿嘿. Github:https://github.com/Radium1209/Maze 先看一下动态效果图(慢放): 首先生成迷宫: 主要用了两个算法:Prim和d ...

  7. 洛谷 P1238 走迷宫【搜索】【DFS】

    洛谷 P1238 走迷宫 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 洛谷 P1238 走迷宫 二.题目分析 (一)算法标签 搜索 DFS ( ...

  8. DFS和BFS概念及实践+acwing 842 排列数字(dfs) +acwing 844. 走迷宫(bfs)

    DFS (深搜), 也有说就是递归的 执着: 一直搜到底,然后回溯下一个节点 数据结构 : stack (这里的栈,实际上是编译器内部的栈, 所以说也可以看成递归, 递归内部也是调用编译器内部栈) 空 ...

  9. python迷宫万花筒代码_用Python3写一个走迷宫的小程序(图形化:matplotlib,dfs,prim)...

    先看一下动态效果图(慢放): 首先生成迷宫: 主要用了两个算法:Prim和dfs 总结:Prim生成的比较像真正的迷宫,所以默认用了Prim生成迷宫 先输入n,m,会生成一个迷宫(prim生成),然后 ...

最新文章

  1. 手把手教你在Tensorflow实现BEGAN 达到惊人的人脸图像生成效果
  2. win10 安装字体且不占用系统盘资源
  3. sqlAlchemy中的对象转换为dict
  4. c++ ptree判断是否存在节点_新人报道献礼:关于boost property_tree的一些探讨
  5. 《剑指offer》孩子们的游戏---约瑟夫问题
  6. 阿里云-设备影子概览
  7. PageHelper分页插件的简单使用
  8. 朴素贝叶斯中拉普拉斯平滑算法
  9. 珠海分销系统官网开发笔记:wordpress中使用canonical标签修复版
  10. java pdf转html插件pdf2htmlex
  11. 沈阳python需求大吗_我为什么放弃了敲代码,做产品?
  12. 通俗易懂理解几何光学(五)光线的光路计算及像差理论
  13. oracle监控pga,oracle pga使用情况常用脚本:
  14. 浏览器中修改视频播放速度
  15. 区块链与分布式数据库的区别
  16. clion安装与配置(一 - WSL)
  17. Substrate 技术及生态6月大事记 | Polkadot Decoded 圆满落幕,黑客松获胜项目为生态注入新生力量
  18. Java实现多线程聊天室
  19. 1065: 人名查询
  20. [分布式控制浅述] (1) 图论基础

热门文章

  1. 释放链表内存C语言,最简单的链表删除第一个节点时释放内存的问题
  2. MQ监听 linux,RabbitMQ的安装,配置,监控
  3. php 添加样式,PHP实现可自定义样式的分页类
  4. MySQL Return JSON Value Attributes
  5. Hadoop HIVE 安装配置(单机集群)
  6. c语言 原码反码和补码
  7. shell 条件控制语句
  8. 1.8 为什么是人的表现
  9. flask send_filesend_from_directory
  10. go语言实现zip压缩与解压