救援(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 ...
随机推荐
- SqlConnectionStringBuilder的用法
SqlConnectionStringBuilder提供了一个很好的构建SQL连接字串的方式.不多说,见代码: SqlConnectionStringBuilder builder = new Sql ...
- spring boot 参数转换
参数调用方式: 1. localhost:8080/person/properties/to/json body参数设置: 2. localhost:8080/person/json/to/prope ...
- ES6入门教程---变量和常量
ES6提出了两个新的声明变量的命令:let 和 const 1. 建议不再使用var,而使用let 和const .优先使用const. 在定义之后值是固定不变的,即为常量 常量的值不能修改,但是如果 ...
- GUI的最终选择 Tkinter(八):Message组件、Spinbox组件、PanedWindow组件、Toplevel组件
Message组件 Message(消息)组件是Label组件的变体,用于显示多行文本消息,Message组件能够自动执行,并调整文本的尺寸使其适应给定的尺寸. from tkinter import ...
- Ubuntu新服务器安装lnmp
版本: nginx(无要求,最新) mysql(5.6.xx) php(5.6.xx) ubuntu(16.04,其他版本也并无过多差异) 准备: #apt-get update #apt-get i ...
- SpringBoot整合Redis使用Restful风格实现CRUD功能
前言 本篇文章主要介绍的是SpringBoot整合Redis,使用Restful风格实现的CRUD功能. Redis 介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-valu ...
- Eclipse 在桌面创建快捷方式打开工作区
创建eclipse快捷的方式,并Copy到桌面. 打开快捷方式的属性窗口,在[目标]栏,增加参数 –data 你的工作区目录
- DOM所有的命令(CMD)
刚接触电脑的时候是从DOS系统开始,DOS时代根本就没有Windows这样的视窗操作界面,只有一个黑漆漆的窗口,让你输入命令.所以学DOS系统操作,cmd命令提示符是不可或缺的.可以告诉大家,大多数的 ...
- cloud turbine
turbine是聚合服务器发送事件流数据的一个工具,hystrix的监控中,只能监控单个节点,实际生产中都为集群,因此可以通过 turbine来监控集群下hystrix的metrics情况,通过eur ...
- There is much opportunity for anyone willing to dedicate himself to his labors.
There is much opportunity for anyone willing to dedicate himself to his labors.付出努力的人才有机会出人头地.