[Swust OJ 409]--小鼠迷宫问题(BFS+记忆化搜索)
题目链接:http://acm.swust.edu.cn/problem/409/
编程任务:
对于给定的小鼠的迷宫,编程计算小鼠a通向小鼠b的所有最短道路。
如果小鼠a无法通向小鼠b则输出“No Solution!”。
8 8 3
3 3
4 5
6 6
2 1
7 7
|
11
96
|
#include <iostream>
#include <queue>
#include <cstring>
#define maxn 101
using namespace std;
typedef long long LL;
struct node{
int sx, sy;
node(int x, int y) :sx(x), sy(y){};
node(){};
};
int n, m, k, mpt[maxn][maxn], vis[maxn][maxn], dis[][] = { , , -, , , -, , };
LL dp[maxn][maxn];
//dp[i][j]代表路径条数,mpt[i][j]最短路程的值
int BFS(int sx, int sy, int ex, int ey){
dp[sx][sy] = ;//初始情况1条路径
vis[sx][sy] = ;
node start(sx, sy);
queue<node>Q;
Q.push(start);
while (!Q.empty()){
node now = Q.front();
Q.pop();
if (now.sx == ex && now.sy == ey)//找到终点,返回最短路径
return mpt[now.sx][now.sy];
for (int i = ; i < ; i++){
int x = now.sx + dis[i][];
int y = now.sy + dis[i][];
if (x >= && x <= n && y >= && y <= m && mpt[x][y] != -){
if (!vis[x][y]){
vis[x][y] = ;
mpt[x][y] = mpt[now.sx][now.sy] + ;//最短路程加1
dp[x][y] = dp[now.sx][now.sy];//直接赋值
node next(x, y);
Q.push(next);
}
else
dp[x][y] += dp[now.sx][now.sy];
}
}
}
return -;
}
int main(){
int x, y, sx, sy, ex, ey;
while (cin >> n >> m >> k){
memset(mpt, , sizeof(mpt));
memset(dp, , sizeof(dp));
memset(vis, , sizeof(vis));
for (int i = ; i < k; i++){
cin >> x >> y;
mpt[x][y] = -;//标记为障碍物
}
cin >> sx >> sy >> ex >> ey;
int ans = BFS(sx, sy, ex, ey);
if (ans == -)
cout << "No Solution!" << endl;
else
cout << mpt[ex][ey] << endl << dp[ex][ey] << endl;
}
return ;
}
[Swust OJ 409]--小鼠迷宫问题(BFS+记忆化搜索)的更多相关文章
- FZU 2092 收集水晶 bfs+记忆化搜索 or 暴力
题目链接:收集水晶 一眼看过去,觉得是普通的bfs,初始位置有两个.仔细想了想...好像如果这样的话..........[不知道怎么说...T_T] dp[12][12][12][12][210] 中 ...
- HDU 4444 Walk (离散化建图+BFS+记忆化搜索) 绝对经典
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4444 题意:给你一些n个矩形,给你一个起点,一个终点,要你求从起点到终点最少需要转多少个弯 题解:因为 ...
- FZU 2092 bfs+记忆化搜索
晚上团队训练赛的题 和普通bfs不同的是 这是同时操纵人与影子两个单位进行的bfs 由于可能发生人和影子同时接触水晶 所以不可以分开操作 当时使用node记录人和影子的位置 然后进行两重for循环来分 ...
- luogu1514 [NOIp2010]引水入城 (bfs+记忆化搜索)
我们先bfs一下看看是否能到最底下的所有点 如果不能的话,直接把不能到的那几个数一数就行了 如果能的话: 可以发现(并不可以)某格能到达的最底下的格子一定是一个连续的区间 (因为如果不连续的话,我们先 ...
- 【BZOJ 1415】 1415: [Noi2005]聪聪和可可 (bfs+记忆化搜索+期望)
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1640 Solved: 962 Description I ...
- csu 最优对称路径(bfs+记忆化搜索)
1106: 最优对称路径 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 371 Solved: 77[Submit][Status][Web Boar ...
- BZOJ.2246.[SDOI2011]迷宫探险(DP 记忆化搜索 概率)
题目链接 求最大的存活概率,DP+记忆化. 用f[s][x][y][hp]表示在s状态,(x,y)点,血量为hp时的存活概率. s是个三进制数,记录每个陷阱无害/有害/未知. 转移时比较容易,主要是在 ...
- BZOJ2246 [SDOI2011]迷宫探险 【记忆化搜索dp + 概率】
题目 输入格式 输出格式 仅包含一个数字,表示在执行最优策略时,人物活着走出迷宫的概率.四舍五入保留3位小数. 输入样例 4 3 3 2 .$. A#B A#C @@@ 143 37 335 85 9 ...
- light oj 1011 - Marriage Ceremonies (状态压缩+记忆化搜索)
题目链接 大概题意是有n个男的n个女的(原谅我这么说,我是粗人),给你一个n*n的矩阵,第i行第j列表示第i个女(男)对第j个男(女)的好感度,然后要安排n对相亲,保证都是正常的(无搞基百合之类的), ...
随机推荐
- 简单实现计算Edit Distance算法
最近因为工作需要,学习了NLP的相关知识,简单动手实现了一下计算Edit Distance的算法,就是计算一个字符串要变成另一个字符串需要的代价,这其中采用Levenshtein方式,即规定一个插入和 ...
- storage theory
preface/prehight:topic: Storage(share fileSystem(可共享文件系统,Access I/O existence bottleNeck,access read ...
- 解析nodejs微信开发-2获取ticket
获取ticket是需要拼接url,url中需要获得的tocken 1.先判断有无tocken:若有则拼接url: 2.请求url: a.处理回调数据,注意时间戳和签名处理方式,此两项并未存到ticke ...
- iOS 处理方法中的可变參数
## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录 ...
- T-SQL 基于关系分割字符串
今天晚上学习了下 SQL 基于关系的运算,同时也捉摸着写了个例子,虽然我知道性能不是很好,还有待优化.直接上源代码吧,思路表达出来有点困难,直接贴上代码,如果有人不懂得可以MM 我. declare ...
- 数据持久化------Archiving(归档,解档)
其中TRPerson为自定义的继承自NSObject的类的子类 其中有两个属性,name 和 age .h文件 #import @interface TRPerson : NSObject<& ...
- fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
xxxxxx.lib(xxxxxx.obj) : fatal error LNK1112: module machine type 'X86' conflicts with target machin ...
- The type javax.servlet.http.HttpServletRequest cannot be resolved.
The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from ...
- C++ HttpServlet 高并发多线程 HTTP 服务器(转)
from:http://www.oschina.net/code/snippet_568966_43193 C/C++ 程序虽然执行效率高,但程序员在开发 WEB 应用时却因为没有好的 WEB 开 ...
- SGU 242. Student's Morning( 网络流 )
看英文题真是麻烦...理解题意花的时间比想的时间还长...裸的网络流, 我们只要限制每个人出发流量为1, 每个大学进入的流量至多为2即可, 相当于构造可行解. -------------------- ...