hdu 1728
//hdu 1728
//这个是一道很经典的迷宫题了,思路感觉。。。取起点和终点,判断连线是否超过n个弯,
//先是从起点出发,上下左右四个方向搜索,找到一条路,把那条路的第一个点压入队列
//然后沿着那个方向一直搜下去,直到不符合条件(4个方向都动不了),就从队列里面去首元素
//然后不断循环这个操作。。。。
#include <iostream>
#include <cstring>
#include <queue>
#include <stdio.h>
#include <algorithm>
using namespace std; char Map[110][110];
int vis[110][110];
int dx[]={0,0,-1,1};//两个数组是搜索的时候用
int dy[]={-1,1,0,0}; int k,x1,x2,y1,y2,i,side1,side2;
struct dot
{
int x,y,k;//k存放转弯数
}; void BFS(dot a,dot b)
{
int flag=0; vis[a.x][a.y]=1;//flag标记是否到达目标
dot m,n; m.x=a.x; m.y=a.y; m.k=-1;//m,n为中间变量
queue<dot>q; q.push(m);//将起点a(m)入队列
while(!q.empty())//别问为什么要用队列非空来做。。。书上写的,记住就ok,因为你还不是大牛
{
m=q.front();
q.pop(); if(m.x==b.x&&m.y==b.y&&m.k<=k) {flag=1; break;} n.k=m.k+1;//因为每次从队列取出首元素,这个时候已经增加了一个弯 for(i=0;i<4;i++)//开始搜索
{
int j=m.x+dx[i];
int l=m.y+dy[i];
while(j>=0&&j<side1&&l>=0&&l<side2&&Map[j][l]!='*')//判断条件
{
if(!vis[j][l])
{
vis[j][l]=1;
n.x=j;
n.y=l;
q.push(n);//如果没被标记,那么标记它,用n记下此时坐标值,压入队列中
}
j+=dx[i];//朝某个方向一直搜索
l+=dy[i];
}
}
}
if(flag==1) cout<<"yes\n";
else
cout<<"no\n";
} int main()
{
int t;
cin>>t;
while(t--)
{
memset(vis,0,sizeof(vis));
//memset(Map,0,sizeof(Map));
dot _m,_n;
cin>>side1>>side2;
for(i=0;i<side1;i++)
cin>>Map[i];
cin>>k>>y1>>x1>>y2>>x2;//要注意这个地方好坑人。。。。。
_m.x=x1-1; _m.y=y1-1;
_n.x=x2-1; _n.y=y2-1;
BFS(_m,_n);
}
return 0;
}
hdu 1728的更多相关文章
- HDU 1728 逃离迷宫
[题目描述 - Problem Description] 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,glo ...
- HDU 1728:逃离迷宫(BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有 ...
- hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...
- hdu 1728 逃离迷宫(dFS+优先队列)
求转弯最少的走路方式!!!! #include<stdio.h> #include<string.h> #include<queue> using namespac ...
- HDU 1728 逃离迷宫(DFS)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1728 题目: 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) ...
- HDU 1728 逃离迷宫(DFS经典题,比赛手残写废题)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 1728 逃离迷宫 bfs记转向
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Mem ...
- HDU - 1728 逃离迷宫 【BFS】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1728 思路 BFS 一开始 从开始位置 往四周走 如果能走的话 这个时候 转弯次数都是0 我们的标记不 ...
- hdu 1728 逃离迷宫 bfs记步数
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Mem ...
随机推荐
- id class
id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式. HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 "#" 来定义. 以下的样式规则应用于元素 ...
- [jQuery编程挑战]003 克隆一个页面元素及其相关事件
挑战: a) 绑定一个点击方法到这个div,点击后此元素会淡出消失 b) 同时克隆一个新的div元素到页面,元素内容是前面div文字内容反向书写(即,sgatbg olleh),同样也具有上面的点击事 ...
- python使用platform模块获取系统环境并去除换行符
近来在porting一个网站,企图拿到这个网站的数据来做分析.为了支持多系统环境的正常运行.需要知道当前系统环境的是什么OS? 1.python内置platform库.可以很方便得到当前系统环境时什么 ...
- powerpoint取色器有什么用|ppt取色器使用教程
在使用powerpoint过程中常常发现一些功能我们很少用到,其实是自己不会用的原因,关于powerpoint取色器有什么用呢?接下来我们一起来学一下ppt取色器使用教程. powerpoint取色器 ...
- CodeForces 478B 第六周比赛B题
B - B Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Descriptio ...
- 1001WA
时间关系只实现了其中一部分的功能 现在的程序可以实现一个大数的平方 #include <stdio.h> #include <string.h> void mypower(i ...
- JQuery整体大纲
今天公司放假,闲的无聊,就总结了一套JQuery的笔记,我感觉更像是大纲,在这里跟大家分享一下,这是我的成果: 这个就是我的劳动成果了,说实话真是不容易,为了做这个东西,翻阅了很多以前做过的笔记,发现 ...
- Install RHadoop with Hadoop 2.2 – Red Hat Linux
Prerequisite Hadoop 2.2 has been installed (and the below installation steps should be applied on ea ...
- org.quartz.utils.UpdateChecker Checking for available updated version of Quartz..
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</ ...
- COJ 0342 逆序对(一)
传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=312 试题描述: 给你一个大小为N的int数组A.请你统计有多少数对(Ai, ...