Description

在你的帮助下,Oliver终于追到小X了,可有一天,坏人把小X抓走了。这正是Oliver英雄救美的时候。所以,Oliver又找到哆啦A梦,借了一个机器,机器显示出一幅方格地图,它告诉Oliver哪里能走,哪里不能走,。并且Oliver在这个地图的右下角,而小X在左上角。时间紧急,Oliver想知道,最少要走多少个格子,才能找到小X。(只能直走)。

Input

共N+1行,第一行为N,以下N行N列0-1矩阵,1表示不能通过,0表示可以通过(左上角和右下角为0). N<30.

Output

共一个数,为最少的走的格子数.

Sample Input

5
0 1 1 1 1
0 0 1 1 1
1 0 0 0 1
1 1 1 0 1
1 1 1 0 0

Sample Output

9


解题思路

板子广搜


正常程序

#include<iostream>
#include<cstdio>
using namespace std;
const int w[4][2]={{1,0},{0,-1},{-1,0},{0,1}};//方向
int a[2000][2000],s[2000][2000];//a是地图兼记录有没有走过,s是步数
int v[1001000][2],h,t=1;
int n,sx,sy,ex,ey;
bool check(int x,int y){return (x>0&&x<=n&&y>0&&y<=n);
}
void bfs(int x,int y){a[x][y]=s[x][y]=1;v[t][0]=x,v[t][1]=y;while(h++<t){for(int i=0;i<4;i++){int xx=v[h][0]+w[i][0],yy=v[h][1]+w[i][1];if(check(xx,yy)&&!a[xx][yy]){a[xx][yy]=1;s[xx][yy]=s[v[h][0]][v[h][1]]+1;v[++t][0]=xx,v[t][1]=yy;if(xx==1&&yy==1)return;}}}
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&a[i][j]);bfs(n,n); printf("%d",s[1][1]);
}

但是不知道为什么数据出错了,所以改成了这样

#include<iostream>
#include<cstdio>
using namespace std;
const int w[4][2]={{1,0},{0,-1},{-1,0},{0,1}};
int a[2000][2000],s[2000][2000];
int v[1001000][2],h,t=1;
int n,sx,sy,ex,ey;
bool check(int x,int y){return (x>0&&x<=n&&y>0&&y<=n);
}
void bfs(int x,int y){a[x][y]=s[x][y]=1;v[t][0]=x,v[t][1]=y;while(h++<t){for(int i=0;i<4;i++){int xx=v[h][0]+w[i][0],yy=v[h][1]+w[i][1];if(check(xx,yy)&&!a[xx][yy]){a[xx][yy]=1;s[xx][yy]=s[v[h][0]][v[h][1]]+1;v[++t][0]=xx,v[t][1]=yy;if(xx==ex&&yy==ey)return;}}}
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){char c;cin>>c;a[i][j]=c-48;}//输入莫得空格scanf("%d%d%d%d",&sx,&sy,&ex,&ey);//莫名数据多了起点和终点bfs(sx,sy); printf("%d",s[ex][ey]-1);
}

【BFS】Oliver的救援相关推荐

  1. 【SSL_P2278】 Oliver的救援

    Oliver的救援 题目链接:Oliver的救援 题目描述 在你的帮助下,Oliver终于追到小X了,可有一天,坏人把小X抓走了.这正是Oliver英雄救美的时候.所以,Oliver又找到哆啦A梦,借 ...

  2. Oliver的救援pascal程序

    这题有点像电子老鼠闯迷宫,也是用广搜来做的 我是用字符来输入的 const dx:array[1..4]of longint=(1,-1,0,0); dy:array[1..4]of longint= ...

  3. SSL P2325 最小转弯

    题目:http://blog.csdn.net/qq_35786326/article/details/78836913 题意:  求在一个矩阵中的最短路径方案中的转弯次数. 分析:   原身:Oli ...

  4. 某新商盟登录,js逆向:★★

    前言 可以关注我哟,一起学习,主页有更多练习例子 如果哪个练习我没有写清楚,可以留言我会补充 如果有加密的网站可以留言发给我,一起学习共享学习路程 4.如侵权,联系我,删 勉强给个两星 网址信息 网址 ...

  5. C++ 算法篇 广度(宽度)优先搜索(BFS)

    广度优先遍历 广度优先遍历(Breadth_First_Search),又称为广度优先搜索,简称BFS. 图的BFS类似于树的层序遍历. 广度优先遍历 如图将左边的图变形,得到右边的图,然后一层一层的 ...

  6. hrbust 哈理工oj 1989 营救小组【BFS】

    营救小组 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 181(39 users) Total Accepted: 46(35 use ...

  7. 宽度优先搜索算法(BFS)详解(超级详细讲解,附有大图)

    目录 一.宽度优先搜索(BFS)是什么? 二.图解宽搜(BFS) 三.对比与发现 四.工具--队列 五.模板 六.最后 一.宽度优先搜索(BFS)是什么? 百度百科这样说: 宽度优先搜索算法(又称广度 ...

  8. UPC-1521 救援行动【搜索】

    题目描述 Angel被人抓住关在一个迷宫了!迷宫的长.宽均不超过200,迷宫中有不可以越过的墙以及监狱的看守.Angel的朋友带了一个救援队来到了迷宫中.他们的任务是:接近Angel.我们假设接近An ...

  9. 【BFS三维路径规划】基于matlab广度优先搜索算法无人机三维路径规划【含Matlab源码 270期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab广度优先搜索算法无人机 ...

  10. [YTU](3273)吃鸡之团队合作 ---- BFS

    Description 暑假就要开始啦!小伙伴们又可以肆无忌惮的开黑吃鸡了喵!我们知道开黑吃鸡最重要的当然是团队合作了.在一个地图中,一个小队的玩家之间的距离不能太远,这样当队友遇到危险被击倒时才能保 ...

最新文章

  1. ArcGIS 坐标系统文件
  2. 一些比较好的设计网站的收藏
  3. Photoshop CC2015软件安装资料及教程
  4. Fedora 17 PHP编程环境配置
  5. 计算机网络tcp三次握手,快速掌握_计算机网络_TCP_三次握手
  6. [wp7游戏]wp7~~竞赛类游戏~~集合贴~~
  7. vue init download template_Webpack(四)Vue
  8. 找不到战网服务器ip地址,wow服务器ip地址-我怎么知道战网服务器的IP地址去PING, – 手机爱问...
  9. 人脸面部情绪识别(一)
  10. JavaScript 中 == 和 === 的区别
  11. 黑马程序员匠心之作|C++教程从0到1入门编程-c++核心编程
  12. 联通宽带在停电以后断网,重启猫还是没网,可能是设置出问题了
  13. 数字经济是什么?如何发展数字经济?
  14. 输入阻抗 输出阻抗
  15. 【静态时序分析】如何寻找时序分析的起点与终点
  16. 年薪30w还是白菜价?大数据工程师凭什么?
  17. vb6.0 CLng,CInt等的bug及其解决办法
  18. Eclipse配置Tomcat以及使用Tomcat启动项目
  19. 2023年1月23日--2023年1月29日(osg+glsl+socket+ue,本周20小时,合计1899小时,剩余8101小时)
  20. t3 服务器文件,用友T3软件数据库文件存放的位置

热门文章

  1. CentOS7 和 Ubuntu16 安装、配置并挂载 NFS
  2. PHP毕业设计项目作品源码选题(13)学校排课和选课系统毕业设计毕设作品开题报告
  3. 计算机空格键作用,电脑键盘上的空格有什么用 键盘上空格的作用说明
  4. 大二〕一直在寻找 生而为人的意义(转载)
  5. 用python计算圆周率Π
  6. 16条时间管理法则 让你快速提高效率
  7. 需要rhce(redhat认证)证书的联系warehouse。无需自己考,直接拿证。
  8. 新入职公司离职率高怎么办
  9. cherry键盘使用备忘
  10. supp(),支持集理解