救援(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 ...
随机推荐
- ASP .NET Core 2.1 HTTP Error 502.5 – Process Failure
ASP .NET Core HTTP Error 502.5 – Process Failure https://www.cnblogs.com/loui/p/7826073.html 页面返回错误 ...
- DotNetAnywhere
DotNetAnywhere:可供选择的 .NET 运行时 原文 : DotNetAnywhere: An Alternative .NET Runtime作者 : Matt Warren译者 : ...
- Codeforces Round #377 (Div. 2) 被坑了
http://codeforces.com/contest/732/problem/B 题目要求任意两个连续的日子都要 >= k 那么如果a[1] + a[2] < k,就要把a[2]加上 ...
- js解析url参数
1.采用正则,这也是现在使用最为方便的 function getQueryString(name) { const reg = new RegExp("(^|&)" + n ...
- FloatHelper
function FloatHelper() { } FloatHelper.prototype.showFloater = function (Target, Title, Action, Acti ...
- springboot 学习笔记(二)
springboot 学习笔记(二) 快速创建一个springboot工程,并引入所需要的依赖 1.利用Spring initializr 来创建一个springboot项目,登陆http://sta ...
- css3弹性伸缩和使用
columns 分栏 column的中文意思就是栏的意思,在html中,作用是分列,把一块内容相同比例均匀的分成一块一块的列,想报纸的内容似的,一篇文章在一张内容上分成好几栏那样显示,它的属性有 1 ...
- Kendo MVVM (二) ObservableObject 对象
概述 Kendo MVVM 框架关键的一个部分为 ViewModel,它主要是通过 kendo.data.ObserableObject 来提供支持的.它可以监控改变( UI 变化或是值的变化)并通知 ...
- epoll使用总结
epoll的使用总结 使用epoll来实现一个tcp server,中间碰到了不少使用细节上的问题,总结一下. man epoll里推荐的使用方法 epoll使用代码 #define MAX_EVEN ...
- jsp另外五大内置对象之response-设置头信息
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...