ytu 1980:小鼠迷宫问题(DFS 深度优先搜索)
小鼠迷宫问题
Time Limit: 2 Sec Memory Limit: 64 MB
Submit: 1 Solved: 1
[Submit][Status][Web Board]
Description
小鼠a与小鼠b身处一个m×n的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿上,下,左,右4个方向进入未封闭的房间。小鼠a位于迷宫的(p,q)方格中,它必须找出一条通向小鼠b所在的(r,s)方格的路。请帮助小鼠a找出所有通向小鼠b的最短道路。
请编程对于给定的小鼠的迷宫,计算小鼠a通向小鼠b的所有最短道路。
Input
本题有多组输入数据,你必须处理到EOF为止。 每组数据的第一行有3个正整数n,m,k,分别表示迷宫的行数,列数和封闭的房间数。接下来的k行中,每行2个正整数,表示被封闭的房间所在的行号和列号。最后的2行,每行也有2个正整数,分别表示小鼠a所处的方格(p,q)和小鼠b所处的方格(r,s)。
Output
对于每组数据,将计算出的小鼠a通向小鼠b的最短路长度和有多少条不同的最短路输出。每组数据输出两行,第一行是最短路长度;第2行是不同的最短路数。每组输出之间没有空行。 如果小鼠a无法通向小鼠b则输出“No Solution!”。
Sample Input
8 8
3
3 3
4 5
6 6
2 1
7 7
Sample Output
11
96
这是道搜索题,要求输出矩阵内a到b点的最短路长度,以及最短路的条数,并且要绕过限定的“封闭房间”,即某些格子无法走。
还可参照 ytu 2463:给小鼠补充代码 同样的题,不同的考察形式。
- #include <iostream>
- #include <cstring>
- using namespace std;
- int f[][];
- int ax,ay;
- int bx,by;
- int dx[]={,,,-};
- int dy[]={,,-,};
- int _count=;
- int _min=;
- int n,m,k;
- void dfs(int d,int t,int curx,int cury)
- {
- if(t>_min)
- return ;
- if(curx< || cury< || curx>n- || cury>m-)
- return ;
- if(cury==by && curx==bx){
- if(t<_min){
- _count=;
- _min=t;
- }
- else{
- _count++;
- }
- return ;
- }
- for(int i=;i<;i++){
- if(curx+dx[i]< || cury+dy[i]<) continue;
- if(!f[curx+dx[i]][cury+dy[i]]){
- f[curx+dx[i]][cury+dy[i]]=true;
- dfs(i,t+,curx+dx[i],cury+dy[i]);
- f[curx+dx[i]][cury+dy[i]]=false;
- }
- }
- return ;
- }
- int main()
- {
- while(cin>>n>>m>>k){
- _count=;
- _min=;
- memset(f,,sizeof(f));
- for(int i=;i<=k;i++){
- int a,b;
- cin>>a>>b;
- f[a][b]=true;
- }
- cin>>ax>>ay;
- cin>>bx>>by;
- dfs(-,,ax,ay);
- cout<<_min<<endl;
- cout<<_count<<endl;
- }
- return ;
- }
Freecode : www.cnblogs.com/yym2013
ytu 1980:小鼠迷宫问题(DFS 深度优先搜索)的更多相关文章
- HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))
Pet Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...
- 回溯算法 DFS深度优先搜索 (递归与非递归实现)
回溯法是一种选优搜索法(试探法),被称为通用的解题方法,这种方法适用于解一些组合数相当大的问题.通过剪枝(约束+限界)可以大幅减少解决问题的计算量(搜索量). 基本思想 将n元问题P的状态空间E表示成 ...
- 『ACM C++』HDU杭电OJ | 1416 - Gizilch (DFS - 深度优先搜索入门)
从周三课开始总算轻松了点,下午能在宿舍研究点题目啥的打一打,还好,刚开学的课程还算跟得上,刚开学的这些课程也是复习以前学过的知识,下半学期也不敢太划水了,被各种人寄予厚望之后瑟瑟发抖,只能努力前行了~ ...
- 步步为营(十五)搜索(一)DFS 深度优先搜索
前方大坑预警! 先讲讲什么是搜索吧. 有一天你去一个果园摘梨子,果农告诉你.有一棵树上有一个金子做的梨子,找到就是你的,你该怎么找? 地图例如以下: S 0 0 0 0 0 0 0 0 0 0 0 0 ...
- [算法总结]DFS(深度优先搜索)
目录 一.关于DFS 1. 什么是DFS 2. DFS的搜索方式 二.DFS的具体实现 三.剪枝 1. 顺序性剪枝 2. 重复性剪枝 3. 可行性剪枝 4. 最优性剪枝 5. 记忆化剪枝 四.练习 一 ...
- 回溯 DFS 深度优先搜索[待更新]
首先申明,本文根据微博博友 @JC向北 微博日志 整理得到,本文在这转载已经受作者授权! 1.概念 回溯算法 就是 如果这个节点不满足条件 (比如说已经被访问过了),就回到上一个节点尝试别 ...
- ytu 2463:给小鼠补充代码(DFS 深度优先搜索)
2463: 给小鼠补充代码 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 5 Solved: 2[Submit][Status][Web Board] ...
- DFS——深度优先搜索的一般格式
DFS是一种深度优先的搜索思想,运用递归完成搜索,本质上也算是穷举思想的一类,可以通过剪枝进行优化. DFS的核心是回溯和递归, 如果以迷宫为例,一般会指定走各个方向的顺序(例如先左再上再右再下).从 ...
随机推荐
- [LeetCode] Copy List with Random Pointe
题目的关键是要让新链表和原有链表发送关联,可以通过这种关联来设置新链表的random pointer 思路:将新链表的元素插入到原有链表元素的后面,如下图所示,就可以根据原有链表的radom-> ...
- apache LogFormat参数说明
在apache的配置文件httpd.conf里一般都有类似于LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Refere ...
- Java对文件及文件夹的操作
public class FileOperater { // 验证字符串是否为正确路径名的正则表达式 private static String matches = "[A-Za-z]:\\ ...
- MySQL各版本的区别(转)
MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会有几个版本的选择. 1. MySQL Community Server 社区版本,开源免费, ...
- js中查找一个字符是否存在。
<script> var a = 'd'; var re = a.indexOf('d'); ){ alert('存在'); } else { alert('不存在'); } </s ...
- LNMP安装成功的界面
在ubuntu13.10上面安装一个lnmp集成环境. 下面是安装成功的界面. ===========================add nginx and php-fpm on startup ...
- 超常用的PHP正则表达式收集整理
以下就是对超常用的PHP正则表达式进行的收集整理,为了方便大家更快更好的掌握php正则表达式. 一.表单验证匹配验证账号,字母开头,允许 5-16 字节,允许字母数字下划线:^[a-zA-Z][a-z ...
- 理解css中的line-height
在css中,line-height有下面五种可能的值:我们来看看w3c中列出如下可能值: normal:默认,设置合理的行间距. number:设置数字,此数字会与当前的字体尺寸相乘来设置行间距. l ...
- 繁华模拟赛 Evensgn剪树枝
#include<iostream> #include<cstdio> #include<string> #include<cstring> #incl ...
- Third scrum meeting - 2015/10/28
在一天的工作中明显发现到,无法和网站开发团队进行交流会严重导致我们的进程拖延,所以我们在现有的情况下也把大家的goal初步完成了,我们也对代码规范进行了详细的讨论,以及UI的设计完成,所以整个团队都真 ...