SDUT 1157-小鼠迷宫问题(BFSamp;DFS)
小鼠迷宫问题
Time Limit: 1500ms Memory limit: 65536K 有疑问?点这里^_^
题目描写叙述
小鼠a位于迷宫的(p。q)方格中,它必须找出一条通向小鼠b所在的(r,s)方格的路。请帮助小鼠a找出全部通向小鼠b的最短道路。
请编程对于给定的小鼠的迷宫,计算小鼠a通向小鼠b的全部最短道路。
输入
每组数据的第一行有3个正整数n,m。k,分别表示迷宫的行数,列数和封闭的房间数。
接下来的k行中。每行2个正整数。表示被封闭的房间所在的行号和列号。
最后的2行。每行也有2个正整数,分别表示小鼠a所处的方格(p,q)和小鼠b所处的方格(r,s)。
输出
每组数据输出两行,第一行是最短路长度;第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;
}
转载于:https://www.cnblogs.com/mthoutai/p/6740979.html
SDUT 1157-小鼠迷宫问题(BFSamp;DFS)相关推荐
- ytu 1980:小鼠迷宫问题(DFS 深度优先搜索)
小鼠迷宫问题 Time Limit: 2 Sec Memory Limit: 64 MB Submit: 1 Solved: 1 [Submit][Status][Web Board] Desc ...
- 迷宫问题的DFS和BFS解法
迷宫问题的DFS和BFS解法 写在前面:通过迷宫问题来熟悉dfs和bfs解法,加深对于这两种搜索方式的理解与运用 DFS算法 注:DFS可以求第一条路径,也可以求最短路径 算法过程 dfs(顶点V ...
- [蓝桥杯][算法提高VIP]学霸的迷宫(bfs+dfs)
题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...
- LeetCode 490. 迷宫(BFS/DFS)
文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 由空地和墙组成的迷宫中有一个球. 球可以向上下左右四个方向滚动,但在遇到墙壁前不会停止滚动. 当球停下时,可以选择下一个方 ...
- 迷宫问题 (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,}; ...
- ytu 2463:给小鼠补充代码(DFS 深度优先搜索)
2463: 给小鼠补充代码 Time Limit: 2 Sec Memory Limit: 64 MB Submit: 5 Solved: 2 [Submit][Status][Web Board ...
- 第四届河南省程序设计大赛D nyoj306-走迷宫【二分DFS、最短路Dijkstra】
Dr.Kong设计的机器人卡多非常爱玩,它常常偷偷跑出实验室,在某个游乐场玩之不疲.这天卡多又跑出来了,在SJTL游乐场玩个不停,坐完碰碰车,又玩滑滑梯,这时卡多又走入一个迷宫.整个迷宫是用一个N * ...
- 逃离迷宫 ( BFS /DFS)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- POJ 3984 迷宫问题 BFS DFS两种解法
题目地址:点这里 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18495 Accepted: 10947 Descr ...
最新文章
- 比特币前核心开发者Mike Hearn三年前的预测一一应验
- hook java_Java 实现 Hook 对鼠标键盘监听 - 沐早'S NOTEBOOK - CSDN博客
- MOCTF-Web-还是水题
- ssm框架下文件上传
- Nginx 设置,设置已经解析的域名,在nginx中没有定义相应server时的默认访问
- k-means算法原理及实战
- 小白浅论JAVA数组中“for加强版”
- 1225 数数字
- 性能比 GPU 高 100 倍!首款可编程忆阻器 AI 计算机面世
- Storm 性能优化
- 服务器2003系统U盘安装方法,u盘winpe下安装windows server 2003详细教程
- [Color]彩色转灰度算法彻底学习
- 基于 HTML5 WebGL 的 3D 工控裙房系统 1
- 原来这就是公文写作领导讲话稿模板
- 单片机C语言九个重要的知识点总结
- 关于网站目录结构需要注意的地方
- matlab nntool 使用步骤: (以p4.3 为例),Matlab_nntool_应用实例
- 湖北大学计算机考入清华,高考上湖北大学保送清华大学直博生,失聪左耳给了他一个安静世界...
- java进阶第二讲-数组、String类
- 电脑入门必懂的常识5
热门文章
- c#winform窗口页面一打开就加载的方法
- 电脑ping服务器显示传输失败,Win10系统ping时出现传输失败常见故障解决办法
- r 64位连接mysql_R与Mysql数据库连接的两种方法
- php对某目录设置ip权限,apache - .htaccess如何单独给某个请求设置IP白名单权限?...
- mysql手动同步_MySql数据库主从手动同步
- curl php 禁用ip6,CentOS 6禁用IPv6解决curl Couldn’t resolve host或dns解析慢
- java 代码块的意义_Java基础(9) - 静态、代码块
- linux在安全模式下如何编辑,在安全模式下修改initrd文件
- java重_重拾JAVA,重识JAVA(一)
- python中的代码块用啥表示_python代码里出现是啥意思