nyoj 1022 最少步数【优先队列+广搜】
最少步数
- 描述
-
这有一个迷宫,有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,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,10表示道路,1表示墙。
现在输入一个道路的坐标作为起点,再如输入一个道路的坐标作为终点,问最少走几步才能从起点到达终点?
(注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3,1)到(4,1)。)
- 输入
- 第一行输入一个整数n(0<n<=100),表示有n组测试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。 - 输出
- 输出最少走几步。
- 样例输入
-
2
3 1 5 7
3 1 6 7 - 样例输出
-
12
11#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
int visit[9][9];
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,
};
struct node
{
int x;
int y;
int step;
friend bool operator <(node a,node b)//结构体设置优先队列优先级
{
return a.step>b.step;//步数小的先出队列
}
};
void bfs(int x1,int y1,int x2,int y2)
{
int ok=0,i,k;
int move[4][2]={0,-1,0,1,-1,0,1,0};//用以在四个方向上的移动
node begin,end;//定义结构体变量
priority_queue<node>q;//设置一个结构体的优先队列
begin.x=x1;
begin.y=y1;
begin.step=0;
q.push(begin);//进队
while(!q.empty())//判断队列是否为空 如果不为空(即不到终点)则一直循环
{
end=q.top();
q.pop();//删除队首元素
if(end.x==x2&&end.y==y2)//判断是否搜索到终点
{
ok=1;
break;
}
for(i=0;i<4;i++)//对此点四个方向进行搜索
{
begin.x=end.x+move[i][0];
begin.y=end.y+move[i][1];
if(!visit[begin.x][begin.y]&&0<=begin.x&&begin.x<9&&0<=begin.y&&begin.y<9&&map[begin.x][begin.y]==0)
{//判断路是否通并且判断当前点是否在题目所给的范围内
visit[begin.x][begin.y]=1;
begin.step=end.step+1;//步数加一
q.push(begin);//将最小步数的一组放入队首
}
}
}
if(ok)
printf("%d\n",end.step);
else
printf("-1\n");
}
int main()
{
int n,m,j,i,s,t,x1,y1,x2,y2;
scanf("%d",&n);
while(n--)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
memset(visit,0,sizeof(visit));
bfs(x1,y1,x2,y2);
}
return 0;
}
nyoj 1022 最少步数【优先队列+广搜】的更多相关文章
- NYOJ-58最少步数,广搜思想!
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 -> Link <- 这个题深搜广搜都是可以的,迷宫已经给出了,就看怎么做了:一般起点终点确定用广搜 ...
- USACO Milk Routing /// 优先队列广搜
题目大意: 在n个点 m条边的无向图中 需要运送X单位牛奶 每条边有隐患L和容量C 则这条边上花费时间为 L+X/C 求从点1到点n的最小花费 优先队列维护 L+X/C 最小 广搜到点n #inclu ...
- 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 ...
- nyoj 592 spiral grid(广搜)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=592 解决以下问题后就方便用广搜解: 1.将数字坐标化,10000坐标为(0,0),这样就 ...
- [题解](优先队列广搜)POJ_3635_Full Tank
用二元组$(city,fuel)$即可记录所有状态,以当前花费为关键字优先队列,开数组记录直接做即可 有一个点在于每次不用枚举所有的加油数量,只需要加一即可,因为如果在加一升更优的话又会扩展出加更多油 ...
- NYOJ 53 最少步数
题 目 http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=58 思路借鉴 DFS-Deep First Search-深度优先 ...
- Dungeon Master ZOJ 1940【优先队列+广搜】
Problem Description You are trapped in a 3D dungeon and need to find the quickest way out! The dunge ...
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 A.Saving Tang Monk II(优先队列广搜)
#include<bits/stdc++.h> using namespace std; ; ; char G[maxN][maxN]; ]; int n, m, sx, sy, ex, ...
- hrbust 1621 迷宫问题II 广搜
题目链接:http://acm.hrbust.edu.cn/vj/index.php?/vj/index.php?c=&c=contest-contest&cid=134#proble ...
随机推荐
- cocos2dx伸缩式列表效果
效果: 代码: ElasticListView.h #pragma once //std #include <string> #include <map> //cocos #i ...
- css中文本框与按钮对不齐解决方案
我们先对对input标记设定样式,代码如下: html 代码 <form> <input type=”text” name=”text1” id=”text1” /> < ...
- 中国海洋大学第四届朗讯杯高级组 I Cuckoo for Hashing
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2719&cid=1203 题意 :意思就是哈希来的,具体大意就是说有两个哈希表,然后有这样 ...
- UVALive - 5135 Mining Your Own Business
刘汝佳白书上面的一道题目:题意是给定一个联通分量,求出割顶以及双连通分量的个数,并且要求出安放安全井的种类数,也就是每个双连通分量中结点数(除开 割顶)个数相乘,对于有2个及以上割顶的双连通分量可以不 ...
- UVA 825 Walkiing on the safe side
根据地图,要求固定两点间最短路径的条数 . 这题的输入数据就是个坑,题目有没有说明数据之间有多个空格,结尾换行符之前也不止一个空格,WA了好几遍,以后这种情况看来都要默认按照多空格的情况处理了. 可以 ...
- 基于ASP.NET的comet简单实现 http长连接,IAsyncResult
http://www.cnblogs.com/hanxianlong/archive/2010/04/27/1722018.html 我潜水很多年,今天忽然出现.很久没写过博客了,不是因为不想写,而是 ...
- ANDROID_MARS学习笔记_S01原始版_011_XML
一.代码 1.xml(1)main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- Android Service with Delphi 10 Seattle
http://delphi.org/2015/09/minimalistic-android-service-with-delphi-10-seattle/ http://delphi.org/201 ...
- 商务部公开微软持有的Android技术专利
微软与众多Android厂商签署了专利授权协议,但从来没有公开它持有多少项Android技术专利.出人意料的是,为了收购诺基亚手机业务,微软今年4月递交到中国商务部的文件中完整公开了它的Android ...
- Layout Resource官方教程(2)用ViewStub引用的嵌入的layout可推迟加载
Loading Views On Demand THIS LESSON TEACHES YOU TO Define a ViewStub Load the ViewStub Layout YOU SH ...