hdu 1728 逃离迷宫 bfs记转向
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728
逃离迷宫
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 18702 Accepted Submission(s): 4526
gloria能从一个位置走到另外一个位置吗?
第1行为两个整数m, n (1 ≤ m, n ≤ 100),分别表示迷宫的行数和列数,接下来m行。每行包含n个字符,当中字符'.'表示该位置为空地,字符'*'表示该位置为障碍。输入数据中仅仅有这两种字符,每组測试数据的最后一行为5个整数k, x1, y1, x2, y2 (1 ≤ k ≤ 10, 1 ≤ x1, x2 ≤ n, 1 ≤ y1, y2 ≤
m),当中k表示gloria最多能转的弯数,(x1, y1), (x2, y2)表示两个位置,当中x1。x2相应列,y1, y2相应行。
2 5 5 ...** *.**. ..... ..... *.... 1 1 1 1 3 5 5 ...** *.**. ..... ..... *.... 2 1 1 1 3
no yes
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <limits.h>
- #include <malloc.h>
- #include <ctype.h>
- #include <math.h>
- #include <string>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- #include <stack>
- #include <queue>
- #include <vector>
- #include <deque>
- #include <set>
- #include <map>
- #define INF 999999999
- #define eps 0.00001
- #define LL __int64
- #define pi acos(-1.0)
- struct point
- {
- int x,y;
- int step;//记录转弯数。
- };
- int vis[110][110];
- int n,m;
- int dir[4][2]={
- 1,0,
- -1,0,
- 0,1,
- 0,-1
- };
- char mp[110][110];
- int ok(point nw)
- {
- if(nw.x>=0&&nw.x<n&&nw.y>=0&&nw.y<m&&mp[nw.x][nw.y]=='.')
- return 1;
- return 0;
- }
- int sx,sy,ex,ey;
- int bfs()
- {
- memset(vis,0,sizeof vis);
- point sta,nw,nex;
- sta.x=sx;
- sta.y=sy;
- sta.step=-1;//第一次不算转弯
- queue<point>q;
- q.push(sta);
- while(!q.empty())
- {
- nw=q.front();
- if(nw.x==ex&&nw.y==ey)
- return max(0,nw.step);
- q.pop();
- for(int i=0;i<4;i++)
- {
- nex=nw;
- nex.x+=dir[i][0];
- nex.y+=dir[i][1];
- nex.step=nw.step+1;//由于是走到了尽头了。所以每一次
- //每次step仅仅加1,所以能够用bool vis
- while(ok(nex))
- {
- if(vis[nex.x][nex.y]==0)
- {
- q.push(nex);
- vis[nex.x][nex.y]=1;//停在这个点。
- }
- nex.x+=dir[i][0];
- nex.y+=dir[i][1];
- }
- }
- }
- return 999999;
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d",&n,&m);
- for(int i=0;i<n;i++)
- scanf("%s",mp[i]);
- int k;
- scanf("%d%d%d%d%d",&k,&sy,&sx,&ey,&ex);
- sy--,sx--,ey--,ex--;
- int ans=bfs();
- if(k>=ans)
- printf("yes\n");
- else
- printf("no\n");
- }
- return 0;
- }
- /*
- 2
- 5 5
- ...**
- *.**.
- .....
- .....
- *....
- 1 1 1 1 3
- 5 5
- ...**
- *.**.
- .....
- .....
- *....
- 2 1 1 1 3
- */
hdu 1728 逃离迷宫 bfs记转向的更多相关文章
- hdu 1728 逃离迷宫 bfs记步数
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Mem ...
- hdu 1728 逃离迷宫 (BFS)
逃离迷宫 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- hdu 1728 逃离迷宫 BFS加优先队列 DFS()
http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意就是能否在规定的转弯次数内从起点走到终点.刚走时那步方向不算. 只会bfs(),但想到这题需要记录转弯 ...
- HDU 1728 逃离迷宫 BFS题
题目描述:输入一个m*n的地图,地图上有两种点,一种是 . 表示这个点是空地,是可以走的,另一种是 * ,表示是墙,是不能走的,然后输入一个起点和一个终点,另外有一个k输入,现在要你确定能否在转k次弯 ...
- HDU 1728 逃离迷宫(DFS||BFS)
逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...
- HDU 1728 逃离迷宫(DFS)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1728 题目: 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) ...
- HDU 1728 逃离迷宫
[题目描述 - Problem Description] 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,glo ...
- HDU 1728 逃离迷宫(DFS经典题,比赛手残写废题)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 1728:逃离迷宫(DFS,剪枝)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- MyEclipse使用总结——设置MyEclipse使用的Tomcat服务器
一.设置使用的Tomcat服务器 如果不想使用MyEclipse自带的tomcat服务器版本,那么可以在MyEclipse中设置我们自己安装好的tomcat服务器 设置步骤如下: Window→Pre ...
- 对一个前端AngularJS,后端OData,ASP.NET Web API案例的理解
依然chsakell,他写了一篇前端AngularJS,后端OData,ASP.NET Web API的Demo,关于OData在ASP.NET Web API中的正删改查没有什么特别之处,但在前端调 ...
- 玩一下C#的语音识别
在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音. 以上,当我说"name",显示"Darren",我说"age&q ...
- android编译错误“OnClickListener cannot be resolved to a type”
在android代码编译时可能会出现如下错误: 部分代码: <span style="font-size:18px;">public void onCreate(Bun ...
- tomcat server.xml maxPostSize=0 导致 果post表单收不到参数解决方案
- Fix "Drives are running out of free space" Error in SharePoint Health Analyzer
前言 最近帮助用户做健康检查,用户发现事件查看器(EventView)里面有很多错误,有一个就是"Drives are running out of free space",而且每 ...
- 冰血暴第一季/全集Fargo迅雷下载
冰血暴 第一季 Fargo 1 (2014)本季看点: 该剧改编自科恩兄弟获得1996年奥斯卡提名的同名经典影片,计划总共拍摄10集,第一季将讲述一个完整的故事.由<识骨寻踪第一季>编剧诺 ...
- Benchmark简介
一.Benchmark简介Benchmark是一个评价方式,在整个计算机领域有着长期的应用.正如维基百科上的解释“As computer architecture advanced, it becam ...
- golang的配置文件操作:viper
参考: 1.http://blog.51cto.com/13599072/2072753 2.https://studygolang.com/articles/14453 3.https://www. ...
- head first--------------state pattern
head first----------浅谈状态模式 状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类 实现代码如下: package com.cl ...