BJFU-ACM-1473【红】sunshine16被困了
来源:互联网 发布:倚天现货交易软件 编辑:程序博客网 时间:2024/04/27 18:53
描述
故事发生在很久很久以前,在山的那边有一群黄精灵,他们很喜欢捉弄人。有一天,sunshine16迷路走到了黄精灵布置的迷宫中,0代表路,1代表墙,sunshine16被困在迷宫中,只可以上下左右走,不可以斜着走。
这个迷宫错综复杂,sunshine16有封闭恐惧症,所以他迫切的想要找到出口,如果不能很快的找到出口的话,他会很害怕, 同学们快来帮帮他吧。
sunshine16的初始位置在第一行第一列,他现在要尽快的跑到出口(最后一行最后一列)
输入
输入包含多组数据
先输入一个正整数n,接下来是一个n*n的矩阵。(保证存在至少一条逃跑路线)(1<=n<=20)
输出
输出其中最短路径的长度。
样例输入
40 1 1 10 1 0 00 1 0 10 0 0 030 0 00 1 00 1 0
样例输出
75
------------------------------------------------------------------------------------
很明显,这是一道很典型的搜索问题。对于找寻路径的问题大概都可以使用搜索进行解答。并利用STL中提供的栈与队列进行数据存储。我解这道题使用的是广搜的思想。先将起点放入,搜索四周可以到达的点,存入队列中,之后搜索过的点抛出队列。循环往复,直至到达终点为止,如果队列为空仍未找到则不存在通路。
以下,是我的代码。
23456789101112131415161718192021222324252627282930313233343536373839404142#include "stdio.h"
#include "string.h"
#include <queue>
using
namespace
std;
int
a[625],b[625],t;
int
bfs(
int
n)
{
int
pos,step=1;
queue <
int
> s;
b[0]=1;
s.push(0);
s.push(step);
for
(;;)
{
pos=s.front();s.pop();
step=s.front();s.pop();
//printf("%d %d\n",pos,step);
if
(a[pos+n]==0&&pos+n<n*n&&b[pos+n]==0) {s.push(pos+n);s.push(step+1);b[pos+n]=1;}
if
(a[pos-n]==0&&pos-n>=0&&b[pos-n]==0) {s.push(pos-n);s.push(step+1);b[pos-n]=1;}
if
(a[pos+1]==0&&pos%n+1<n&&b[pos+1]==0) {s.push(pos+1);s.push(step+1);b[pos+1]=1;}
if
(a[pos-1]==0&&pos%n-1>=0&&b[pos-1]==0) {s.push(pos-1);s.push(step+1);b[pos-1]=1;}
if
(pos==n*n-1) {
break
;}
}
return
step;
}
int
main()
{
int
i,j,p;
while
(
scanf
(
"%d"
,&t)!=EOF)
{
for
(i=0;i<t*t;i++)
{
scanf
(
"%d"
,&a[i]);
}
p=bfs(t);
printf
(
"%d\n"
,p);
memset
(a,0,
sizeof
(a));
memset
(b,0,
sizeof
(b));
}
return
0;
}
0 0
- BJFU-ACM-1473【红】sunshine16被困了
- 广度优先搜索题目“sunshine16被困了”
- BJFU-ACM-1009 抽奖
- BJFU-ACM-1004 Sudoku
- BJFU ACM Online Judge 1549
- 什么原因?我们被困住了
- 红了
- ACM-红与黑
- 小弟我用$.ajax,被困了好几天啊
- 醒了-韩红
- 《天亮了》韩红
- FPGA红了
- 红米降价了
- 林花谢了春红
- bjfu 1009
- bjfu 1008
- BJFU 1406
- bjfu 1008
- iOS蓝牙调用的一般流程-CBPeripheralManagert和CBCentralManager
- 纸上谈兵没有大智慧
- Handler sendMessage 与 obtainMessage (sendToTarget)比较
- android菜鸟之路-事件分发机制总结(一)
- 《转》OpenStack组件keystone与LDAP协议集成(OpenLDAP和Active Directory)
- BJFU-ACM-1473【红】sunshine16被困了
- 在java中实现远程方法调用
- 22.cocos2d-x数据结构
- angulr概念--给技术加点料
- pthread线程库之-线程退出问题
- JAVA枚举的作用与好处
- 学习鸟哥的Linux私房菜笔记(1)——Linux系统入门
- 一IT公司hr对软件外包感受(转)
- epoll学习及实例