SDUT 1157-小鼠迷宫问题(BFS&DFS)

小鼠迷宫问题

Time Limit: 1500ms   Memory limit: 65536K  有疑问?点这里^_^

题目描写叙述

小鼠a与小鼠b身处一个m×n的迷宫中。如图所看到的。每个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不同意不论什么人进入。在迷宫中不论什么位置均可沿上,下。左,右4个方向进入未封闭的房间。

小鼠a位于迷宫的(p。q)方格中,它必须找出一条通向小鼠b所在的(r,s)方格的路。请帮助小鼠a找出全部通向小鼠b的最短道路。

请编程对于给定的小鼠的迷宫,计算小鼠a通向小鼠b的全部最短道路。

输入

本题有多组输入数据,你必须处理到EOF为止。
每组数据的第一行有3个正整数n,m。k,分别表示迷宫的行数,列数和封闭的房间数。
接下来的k行中。每行2个正整数。表示被封闭的房间所在的行号和列号。
最后的2行。每行也有2个正整数,分别表示小鼠a所处的方格(p,q)和小鼠b所处的方格(r,s)。

输出

对于每组数据,将计算出的小鼠a通向小鼠b的最短路长度和有多少条不同的最短路输出。
每组数据输出两行,第一行是最短路长度;第2行是不同的最短路数。
每组输出之间没有空行。

假设小鼠a无法通向小鼠b则输出“No Solution!”。

演示样例输入

8 8 3
3 3
4 5
6 6
2 1
7 7

演示样例输出

11
96
BFS搜到最短路径。

。然后BFS怒搜路径数

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <cstdlib>
#include <set>
#include <map>
#include <vector>
#include <string>
#include <queue>
#include <stack>
#include <cmath>
#define LL long long
using namespace std;
const int INF = 0x3f3f3f3f;
struct node
{int x,y,step;
};
int sb,ans,n,m,sx,sy,ex,ey,dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
bool ma[110][110],vis[110][110];
int bfs()
{memset(vis,0,sizeof(vis));queue <node> Q;node now,next;now.x=sx;now.y=sy;now.step=0;vis[sx][sy]=1;Q.push(now);while(!Q.empty()){now=Q.front();Q.pop();if(now.x==ex&&now.y==ey)return now.step;for(int i=0;i<4;i++){next.x=now.x+dir[i][0];next.y=now.y+dir[i][1];if(next.x>=1&&next.x<=n&&next.y>=1&&next.y<=m&&!vis[next.x][next.y]&&ma[next.x][next.y]){vis[next.x][next.y]=1;next.step=now.step+1;Q.push(next);}}}return -1;
}
void dfs(int x,int y,int step)
{if(step>sb) return ;if(x==ex&&y==ey&&step==sb){++ans;return ;}for(int i=0;i<4;i++){int tx=x+dir[i][0];int ty=y+dir[i][1];if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&!vis[tx][ty]&&ma[tx][ty]){vis[tx][ty]=1;dfs(tx,ty,step+1);vis[tx][ty]=0;}}
}
int main()
{int k,u,v;while(~scanf("%d%d%d",&n,&m,&k)){memset(ma,1,sizeof(ma));while(k--){scanf("%d%d",&u,&v);ma[u][v]=0;}scanf("%d%d%d%d",&sx,&sy,&ex,&ey);sb=bfs();if(sb==-1){puts("No Solution!");continue;}printf("%d\n",sb);memset(vis,0,sizeof(vis));ans=0;vis[sx][sy]=1;dfs(sx,sy,0);printf("%d\n",ans);}return 0;
}

posted on 2017-04-20 21:42 mthoutai 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/mthoutai/p/6740979.html

SDUT 1157-小鼠迷宫问题(BFSamp;DFS)相关推荐

  1. ytu 1980:小鼠迷宫问题(DFS 深度优先搜索)

     小鼠迷宫问题 Time Limit: 2 Sec  Memory Limit: 64 MB Submit: 1  Solved: 1 [Submit][Status][Web Board] Desc ...

  2. 迷宫问题的DFS和BFS解法

    迷宫问题的DFS和BFS解法 ​ 写在前面:通过迷宫问题来熟悉dfs和bfs解法,加深对于这两种搜索方式的理解与运用 DFS算法 注:DFS可以求第一条路径,也可以求最短路径 算法过程 dfs(顶点V ...

  3. [蓝桥杯][算法提高VIP]学霸的迷宫(bfs+dfs)

    题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...

  4. LeetCode 490. 迷宫(BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 由空地和墙组成的迷宫中有一个球. 球可以向上下左右四个方向滚动,但在遇到墙壁前不会停止滚动. 当球停下时,可以选择下一个方 ...

  5. 迷宫问题 (dfs)

    定义一个二维数组: int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,}; ...

  6. ytu 2463:给小鼠补充代码(DFS 深度优先搜索)

    2463: 给小鼠补充代码 Time Limit: 2 Sec  Memory Limit: 64 MB Submit: 5  Solved: 2 [Submit][Status][Web Board ...

  7. 第四届河南省程序设计大赛D nyoj306-走迷宫【二分DFS、最短路Dijkstra】

    Dr.Kong设计的机器人卡多非常爱玩,它常常偷偷跑出实验室,在某个游乐场玩之不疲.这天卡多又跑出来了,在SJTL游乐场玩个不停,坐完碰碰车,又玩滑滑梯,这时卡多又走入一个迷宫.整个迷宫是用一个N * ...

  8. 逃离迷宫 ( BFS /DFS)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  9. POJ 3984 迷宫问题 BFS DFS两种解法

    题目地址:点这里 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18495 Accepted: 10947 Descr ...

最新文章

  1. 比特币前核心开发者Mike Hearn三年前的预测一一应验
  2. hook java_Java 实现 Hook 对鼠标键盘监听 - 沐早'S NOTEBOOK - CSDN博客
  3. MOCTF-Web-还是水题
  4. ssm框架下文件上传
  5. Nginx 设置,设置已经解析的域名,在nginx中没有定义相应server时的默认访问
  6. k-means算法原理及实战
  7. 小白浅论JAVA数组中“for加强版”
  8. 1225 数数字
  9. 性能比 GPU 高 100 倍!首款可编程忆阻器 AI 计算机面世
  10. Storm 性能优化
  11. 服务器2003系统U盘安装方法,u盘winpe下安装windows server 2003详细教程
  12. [Color]彩色转灰度算法彻底学习
  13. 基于 HTML5 WebGL 的 3D 工控裙房系统 1
  14. 原来这就是公文写作领导讲话稿模板
  15. 单片机C语言九个重要的知识点总结
  16. 关于网站目录结构需要注意的地方
  17. matlab nntool 使用步骤: (以p4.3 为例),Matlab_nntool_应用实例
  18. 湖北大学计算机考入清华,高考上湖北大学保送清华大学直博生,失聪左耳给了他一个安静世界...
  19. java进阶第二讲-数组、String类
  20. 电脑入门必懂的常识5

热门文章

  1. c#winform窗口页面一打开就加载的方法
  2. 电脑ping服务器显示传输失败,Win10系统ping时出现传输失败常见故障解决办法
  3. r 64位连接mysql_R与Mysql数据库连接的两种方法
  4. php对某目录设置ip权限,apache - .htaccess如何单独给某个请求设置IP白名单权限?...
  5. mysql手动同步_MySql数据库主从手动同步
  6. curl php 禁用ip6,CentOS 6禁用IPv6解决curl Couldn’t resolve host或dns解析慢
  7. java 代码块的意义_Java基础(9) - 静态、代码块
  8. linux在安全模式下如何编辑,在安全模式下修改initrd文件
  9. java重_重拾JAVA,重识JAVA(一)
  10. python中的代码块用啥表示_python代码里出现是啥意思