NYOJ-58最少步数,广搜思想!
最少步数
-> Link <-
这个题深搜广搜都是可以的,迷宫已经给出了,就看怎么做了;一般起点终点确定用广搜求最短路径问题;
广搜就用到队列了,将起点周围的可行的点都加入队列,在从队列中选取点又重复刚才的操作,直到找到终点;
可以用二维数组存起点到此点的最短路径,起点的路径为0;从队列里拿出一个点,其周围可行的点的路径便是这个点的路径加一,一直广搜到终点
- #include<bits/stdc++.h>
- using namespace std;
- const int INF=0x3f3f3f;
- int MAP[9][9]=
- {
- 1,1,1,1,1,1,1,1,1,
- 1,0,0,1,0,0,1,0,1,
- 1,0,0,1,1,0,0,0,1,
- 1,0,1,0,1,1,0,1,1,
- 1,0,0,0,0,1,0,0,1,
- 1,1,0,1,0,1,0,0,1,
- 1,1,0,1,0,1,0,0,1,
- 1,1,0,1,0,0,0,0,1,
- 1,1,1,1,1,1,1,1,1,
- };
- int sx,sy,gx,gy;
- typedef pair<int,int>P;
- int d[9][9];
- int dx[4]={0,0,-1,1};
- int dy[4]={1,-1,0,0};
- void init()
- {
- for(int i=0;i<=8;i++)
- for(int j=0;j<=8;j++)
- d[i][j]=INF;
- }
- int bfs()
- {
- queue<P>q;
- q.push(P(sx,sy));
- d[sx][sy]=0;
- while(!q.empty())
- {
- P p=q.front();
- q.pop();
- if(p.first==gx&&p.second==gy) break;
- for(int i=0;i<4;i++)
- {
- int xx=p.first+dx[i];
- int yy=p.second+dy[i];
- if(xx>=0&&xx<=8&&yy>=0&&yy<=8&&!MAP[xx][yy]&&d[xx][yy]==INF)
- {
- q.push(P(xx,yy));
- d[xx][yy]=d[p.first][p.second]+1;
- }
- }
- }
- return d[gx][gy];
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d%d%d",&sx,&sy,&gx,&gy);
- init();
- printf("%d\n",bfs());
- }
- return 0;
- }
NYOJ-58最少步数,广搜思想!的更多相关文章
- NYOJ 58 最少步数
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...
- [ACM_搜索] ZOJ 1103 || POJ 2415 Hike on a Graph (带条件移动3盘子到同一位置的最少步数 广搜)
Description "Hike on a Graph" is a game that is played on a board on which an undirected g ...
- nyoj 1022 最少步数【优先队列+广搜】
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...
- nyoj 613 免费馅饼 广搜
免费馅饼 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...
- NYOJ 53 最少步数
题 目 http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=58 思路借鉴 DFS-Deep First Search-深度优先 ...
- ny 58 最少步数 (BFS)
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=58 就是一道简单的BFS 练习练习搜索,一次AC #include <iostream& ...
- 南阳理工 58 最少步数 (DFS)
描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0, ...
- NYOJ 483 Nightmare 【广搜】+【无标记】
版权声明:长风原创 https://blog.csdn.net/u012846486/article/details/31032479 Nightmare 时间限制:1000 ms | 内存限制: ...
- NYOJ 284 坦克大战 (广搜)
题目链接 描述 Many of us had played the game "Battle city" in our childhood, and some people (li ...
随机推荐
- 窗口Dialog
Dialog是窗口的意思,它是Window的子类.与frame相比,frame是我们大的窗口,而dialog便是那种弹出来和你说话的对话框. Dialog类的默认布局是BorderLayout Dia ...
- 转】R利剑NoSQL系列文章 之 Cassandra
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/3/ 感谢! R利剑NoSQL系列文章 之 Cassandr ...
- TCP协议三次握手和四次握手
前言 先说一下IP协议和TCP协议,IP协议是无连接的通信协议,IP不会占用两个设备之间通信的线路,IP实际上主要负责将每个数据包路由至目的地,但是IP协议并没有能够确保数据包是否到达,传过去的数据包 ...
- Java多线程——进程和线程
Java多线程——进程和线程 摘要:本文主要解释在Java这门编程语言中,什么是进程,什么是线程,以及二者之间的关系. 部分内容来自以下博客: https://www.cnblogs.com/dolp ...
- VUE学习,is 特性,转载来源:https://segmentfault.com/q/1010000007205176/
- ES之值类型以及堆和栈
ES的数据类型: 原始类型(值存在栈内存中): Number.String Boolean.undefined.null charAt(index)返回该index所在的字节,charCodeAt(i ...
- 《基于Node.js实现简易聊天室系列之引言》
简述:这个聊天室是基于Node.js实现的,完成了基本的实时通信功能.在此之前,对node.js和mongodb一无所知,但是通过翻阅博客,自己动手基本达到了预期的效果.技术,不应该是闭门造车,而是学 ...
- Android ImageView setImageBitmap 不显示图片
从sd卡里读出图片后有时调用setImageBitmap(bitmap)方法会显示不出图片,仔细考虑过后原来是加载的图片过大导致的,解决办法为: BitmapFactory.Options op = ...
- Apache Tomcat 之路(二 部署web 应用程序)
1.创建一个webapplication,不论是解压的应用程序包还是war包,在tomcat 上都能部署,这里提供一个简单的web项目:git地址:https://github.com/coderxi ...
- java 解析四则混合运算表达式并计算结果
package ch8; import java.util.LinkedList; import java.util.List; import java.util.Stack; /** * 四则混合运 ...