救援(BFS)
题目描述:
在你的帮助下,Oliver终于追到小X了,可有一天,坏人把小X抓走了。这正是Oliver英雄救美的时候。所以,Oliver又找到哆啦A梦,借了一个机器,机器显示出一幅方格地图,它告诉Oliver哪里能走,哪里不能走,,并且知道Oliver和小X在这个地图的位置。时间紧急,Oliver想知道,最少要走多少个格子,才能找到小X。(只能直走)。
输入格式:
共N+2行,第一行为N,以下N行N列0-1矩阵,1表示不能通过,0表示可以通过(起点和终点为0).,最后一行是他们两个的位置坐标,这些数用一个空格隔开。
输出格式:
共一个数,为最少的走的格子数。
样例输入:
5
01111
00111
10001
11101
11100
5 5 1 1
样例输出:
8 思路:典型的广搜,while(队列不为空){BFS}就可以了。学过BFS的应该都会。 用队列做的丑陋代码:
#include<bits/stdc++.h>
using namespace std;
struct data{
int x;
int y;
int step;
}t;
char a[][];//因为方块之间无空格,用char
int dx[]={,-,,};
int dy[]={,,-,};
queue<data> q;//队列
int ha[][];
int main(){
int n,sx,sy,ex,ey;
cin>>n;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)cin>>a[i][j];
cin>>sx>>sy>>ex>>ey;
q.push(data{sx,sy,});
ha[sx][sy]=;
while(!q.empty()){//只要队列不为空 BFS
t=q.front();
q.pop();
if(t.x==ex && t.y==ey){
printf("%d\n",t.step);//到终点去打印
break;
}
for(int i=;i<;i++){
int nx=t.x+dx[i],ny=t.y+dy[i];
if(nx>= && nx<=n && ny>= && ny<=n && a[nx][ny]=='' && ha[nx][ny]==){
ha[nx][ny]=;
q.push(data{nx,ny,t.step+});
}
}
}
}
救援(BFS)的更多相关文章
- 救援行动(save) (BFS)
时间限制: 1 Sec 内存限制: 64 MB提交: 42 解决: 9[提交][状态][讨论版] 题目描述 Angel被人抓住关在一个迷宫了!迷宫的长.宽均不超过200,迷宫中有不可以越过的墙以及 ...
- hdu 1242:Rescue(BFS广搜 + 优先队列)
Rescue Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- 救援行动(save)
救援行动(save) 题目描述 Angel被人抓住关在一个迷宫了!迷宫的长.宽均不超过200,迷宫中有不可以越过的墙以及监狱的看守.Angel的朋友带了一个救援队来到了迷宫中.他们的任务是:接近Ang ...
- hdu1242 Rescue(BFS +优先队列 or BFS )
http://acm.hdu.edu.cn/showproblem.php?pid=1242 题意: Angel被传说中神秘的邪恶的Moligpy人抓住了!他被关在一个迷宫中.迷宫的长.宽不超 ...
- BFS && DFS
HDOJ 1312 Red and Black http://acm.hdu.edu.cn/showproblem.php?pid=1312 很裸的dfs,在dfs里面写上ans++,能到几个点就调了 ...
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...
- 【BZOJ-1656】The Grove 树木 BFS + 射线法
1656: [Usaco2006 Jan] The Grove 树木 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 186 Solved: 118[Su ...
- POJ 3278 Catch That Cow(bfs)
传送门 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 80273 Accepted: 25 ...
- POJ 2251 Dungeon Master(3D迷宫 bfs)
传送门 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28416 Accepted: 11 ...
随机推荐
- JS高级学习历程-15
昨天内容回顾 面向对象的私有成员.静态成员 私有成员:在构造函数里边定义局部变量,就是私有成员. 静态成员:在js里边,函数就是对象,可以通过给函数对象声明成员方式声明静态成员. 原型继承 关键字:p ...
- rand()函数的用法
C++中rand() 函数的用法 1.rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数. 2.如果你要产生0~99这100个整数中的一个随机整数, ...
- NET Core 2.1 Preview 1
NET Core 2.1 Preview 1 [翻译] .NET Core 2.1 Preview 1 发布 原文: Announcing .NET Core 2.1 Preview 1 今天,我们宣 ...
- CentOS,net core2 sdk nginx、supervisor、mysql
CentOS下 .net core2 sdk nginx.supervisor.mysql环境搭建 作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把 ...
- NET CORE 基础
NET CORE 基础管理系统 [SF]开源的.NET CORE 基础管理系统 - 安装篇 [SF]开源的.NET CORE 基础管理系统 -系列导航 1.开发必备工具 IDE:VS2017 运行 ...
- 转 DataGuard环境搭建 (一主一备一级联)
DataGuard环境搭建 (一主一备一级联) http://blog.itpub.net/30130773/viewspace-2116985/ 1.--------- primary_role / ...
- 转 SecureCRT 遇到一个致命的错误且必须关闭——解决
http://blog.csdn.net/lisheng19870305/article/details/45537759 问题描述: 1.以前安装过SecureCRT,现在出现问题,手工卸载不完全, ...
- 《深入理解java虚拟机》笔记(2)HotSpot虚拟机对象探秘
一.对象的创建 1.类加载: 虚拟机在遇到一条new指令时候,检查类是否已被加载.解析.初始化过,如果没有,则执行类加载过程. 2.分配内存:类加载完成后,则为新对象从java堆上分配内存,分配内存有 ...
- cachecloud:Redis云管理平台
https://github.com/sohutv/cachecloud 一.CacheCloud是做什么的 CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standal ...
- SQL Server开窗函数之OVER子句、PARTITION BY 子句
开窗函数与聚合函数一样,都是对行的集合组进行聚合计算.它用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同 ...