暑假集训(1)第八弹 -----简单迷宫(Poj3984)
Description
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,
};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
Input
Output
Sample Input
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
Sample Output
(0, 0)
(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4,4) 问题分析:依然是本应该用dfs的问题但我用的是bfs。。。通过在地图上记录上一个节点并从终点开始走,可以得到路径。
#include "cstdio"
#include "iostream"
#include "queue" using namespace std;
int a[][];
struct person
{
int i;
int j;
};
void abegin()
{
for (int i=;i<;i++)
for (int j=;j<;j++)
cin>>a[i][j];
}
void print()
{
int i=,j=;
printf ("(%d, %d)\n",i,j);
while (i != || j != )
{
switch(a[i][j])
{
case : i--; break;
case : i++; break;
case : j--; break;
case : j++; break;
default: continue;
}
printf ("(%d, %d)\n",i,j);
}
}
void bfs ()
{
queue<person> p;
person fir,sec;
fir.i = ;
fir.j = ;
a[fir.i][fir.j] = ;
p.push(fir);
while (!p.empty())
{
sec = p.front();
p.pop();
if (sec.i> && a[sec.i-][sec.j] < )
{
fir.i=sec.i-;
fir.j=sec.j;
a[fir.i][fir.j] = ;
p.push(fir);
}
if (sec.i< && a[sec.i+][sec.j] < )
{
fir.i=sec.i+;
fir.j=sec.j;
a[fir.i][fir.j] = ;
p.push(fir);
}
if (sec.j> && a[sec.i][sec.j-] < )
{
fir.i=sec.i;
fir.j=sec.j-;
a[fir.i][fir.j] = ;
p.push(fir);
}
if (sec.j< && a[sec.i][sec.j+] < )
{
fir.i=sec.i;
fir.j=sec.j+;
a[fir.i][fir.j] = ;
p.push(fir);
} if (a[][] != )
{
print ();
return;
}
}
}
int main()
{
abegin();
bfs();
return ;
}
暑假集训(1)第八弹 -----简单迷宫(Poj3984)的更多相关文章
- 暑假集训(4)第八弹——— 组合(hdu1524)
题意概括:你已经赢得两局,最后一局是N个棋子往后移动,最后一个无法移动的玩家失败. 题目分析:有向无环图sg值游戏,尼姆游戏的抽象表达.得到每个棋子的sg值之后,把他们异或起来,考察异或值是否为0. ...
- 暑假集训(2)第八弹 ----- Hero(hdu4310)
K - Hero Crawling in process... Crawling failed Time Limit:3000MS Memory Limit:65536KB 64bit ...
- 暑假集训(1)第六弹 -----简单计算器(Hdoj1237)
Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算 ...
- 暑假集训(3)第四弹 -----Frogger(Poj2253)
题意梗概:青蛙王子最近喜欢上了另一只经常坐在荷叶上的青蛙公主.不过这件事不小心走漏了风声,被某fff团团员知 道了,在青蛙王子准备倾述心意的那一天,fff团团员向湖泊中注入大量的充满诅咒力量的溶液.这 ...
- 暑假集训(2)第七弹 -----今年暑假不AC(hdu2037)
J - 今年暑假不AC Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB 64 ...
- 暑假集训(1)第三弹 -----Dungeon Master(Poj2251)
Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...
- 暑假集训(4)第五弹——— 数论(hdu1222)
题意概括:那天以后,你好说歹说,都快炼成三寸不烂之舍之际,小A总算不在摆着死人脸,鼓着死鱼眼.有了点恢复的征兆.可孟子这家伙说的话还是有点道理,那什么天将降....额,总之,由于贤者法阵未完成,而小A ...
- 暑假集训(4)第七弹——— 组合(hdu1850)
题意概括:你赢得了第一局.魔鬼给出的第二局是,如果有N堆牌,先手的人有几种可能胜利. 问题分析:尼姆游戏,先得到n堆牌的数量异或和,再将异或和与每一个牌组的数量异或,如果结果小于原牌组数量 则可能++ ...
- 暑假集训(4)第六弹——— 组合(poj1067)
题意概括:上一次,你成功甩掉了fff机械兵.不过,你们也浪费了相当多的时间.fff团已经将你们团团包围,并且逐步 逼近你们的所在地.面对如此危机,你不由得悲观地想:难道这acm之路就要从此中断?虽然走 ...
随机推荐
- HIVE中查询FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Communications link failure
有一天早上到公司用hive中查询数据,发现报错不能连接.通过检查发现mysql服务器没有启动,开启mysql服务器后查询正常.
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 再看GOPATH
原本不打算介绍GOPATH,然而,总是有初学者问一些关于GOPATH的问题,因此在这里再介绍一下GOPATH GOPATH环境变量用于指定这样一些目录:除$GOROOT之外的包含Go项目源代码和二进制 ...
- Web Service学习文旦下载
Web Service的学习暂且告一段落,因为毕竟只是对它作简要了解,至于其原理什么并不打算涉及. 在这里我提供下我之前文档的整理版本: http://kuai.xunlei.com/d/YlzvAG ...
- Java 随机生成中文姓名,手机号,邮编,住址
package lovo; import java.util.HashMap; import java.util.Map; /** * 随机生成中文姓名,性别,Email,手机号,住址 * @auth ...
- Filter案例
1.有选择的被访问 描述:首先若用户没有在页面提交注册(直接访问list.jsp),就只能被允许访问a.jsp.其他页面均不被允许访问 在login.jsp提交信息之后,可以在b.jsp访问, 代码如 ...
- ios调打电话代码
// 定义点击拨号按钮时的操作 - (void)callAction{ NSString *number = @"";// 此处读入电话号码 // NSString *num = ...
- 理解C# Lazy<T>
1.Lazy<T>解决什么问题? 考虑下面的需求,有个对象很大,创建耗时,并且要在托管堆上分配一大块空间.我们当然希望,用到它的时候再去创建.也就是延迟加载,等到真正需要它的时候,才去加载 ...
- python中的对象拷贝
python中.进行函数參数传递或者返回值时,假设是一般的变量,会拷贝传递.假设是列表或字典则是引用传递.那python怎样对列表和字典进行拷贝传递呢:标准库的copy模块提供了两个方法:copy和d ...
- Redis学习手册(虚拟内存)
一.简介: 和大多NoSQL数据库一样,Redis同样遵循了Key/Value数据存储模型.在有些情况下,Redis会将Keys/Values保存在内存中以提高数据查询和数据修改的效率,然而这样的做法 ...