hdoj 1728 逃离迷宫
逃离迷宫
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12621 Accepted Submission(s): 3019
第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对应行。
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #include<string> 6 #include<cmath> 7 #include<queue> 8 using namespace std; 9 int m,n,x2,y2,k; 10 char map[105][105]; 11 int vis[105][105];//标记走过,顺便标记这个位置上走过的,拐了几个弯 12 int dir[4][2]={{0,-1},{-1,0},{0,1},{1,0}}; 13 struct Node 14 { 15 int x,y,step,fx; 16 }; 17 int bfs(int x1,int y1) 18 {int fangxiang,i; 19 Node now,eed; 20 vis[x1][y1]=0;//没走过的都标记为-1 21 queue<Node>Q; 22 eed.x=x1;eed.y=y1;eed.step=0;eed.fx=0; 23 Q.push(eed); 24 while(!Q.empty()) 25 { 26 now=Q.front(); 27 Q.pop(); 28 if(now.x==x2 && now.y==y2 && now.step<=k) 29 return 1; 30 for(i=0;i<4;i++) 31 { 32 eed.x=now.x+dir[i][0];eed.y=now.y+dir[i][1]; 33 fangxiang=i+1;//1代表向左走,2代表向上走,3代表向右走,4代表向下走; 34 if(now.fx==0)//一下三个判断是判断和之前的方向是否一致 35 {eed.fx=fangxiang;eed.step=0;} 36 else if(now.fx!=fangxiang) 37 { 38 eed.step=now.step+1;eed.fx=fangxiang;//方向不一致的话,加上1 39 } 40 else {eed.step=now.step;eed.fx=now.fx;} 41 if(eed.x>=1 && eed.x<=m && eed.y>=1 && eed.y<=n && eed.step<=k && map[eed.x][eed.y]=='.') 42 { 43 if(vis[eed.x][eed.y]!=-1 && eed.step<=vis[eed.x][eed.y]) 44 {//如果这个点被走过,但是下一个走的拐的弯比前一个少的话,依然下一个能走,顺便记录拐的弯数 45 Q.push(eed);vis[eed.x][eed.y]=eed.step; 46 } 47 else if(vis[eed.x][eed.y]==-1) 48 { 49 Q.push(eed);vis[eed.x][eed.y]=eed.step; 50 } 51 } 52 } 53 } 54 return 0; 55 } 56 int main() 57 { 58 int i,j,t,x1,y1; 59 cin>>t; 60 while(t--) 61 { 62 cin>>m>>n; 63 for(int i=1;i<=m;i++) 64 for(int j=1;j<=n;j++) 65 { 66 cin>>map[i][j]; 67 vis[i][j]=-1; 68 } 69 scanf("%d %d %d %d %d",&k,&y1,&x1,&y2,&x2); 70 if((x1==x2 && y1==y2)|| bfs(x1,y1)==1) 71 printf("yes\n"); 72 else printf("no\n"); 73 } 74 return 0; 75 }
hdoj 1728 逃离迷宫相关推荐
- hdu 1728 逃离迷宫 (bfs)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU 1728 逃离迷宫(BFS的优化)
这一题,有两个地方需要注意:(除了题目令人窒息的行列的x y设置) ①转弯如何判断? 需要给转弯的方向赋值.通常,我们在节点向四个方向延伸的时候,喜欢这样 int nextx[4]={0,0,-1,1 ...
- HDU ACM 1728 逃离迷宫 (广搜BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意:给出一张图,转弯数k,起点(x1,y1),(x2,y2)判断能不能最多只转k个弯时从起点走到终点 输 ...
- hdu 1728 逃离迷宫(dFS+优先队列)
求转弯最少的走路方式!!!! #include<stdio.h> #include<string.h> #include<queue> using namespac ...
- HDU 1728 逃离迷宫
给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位 ...
- HDU 1728 逃离迷宫【BFS】
题意:给出一个起点,一个终点,规定的转弯次数,问能否在规定的转弯次数内到达终点--- 这一题是学(看)习(题)的(解)@_@ 主要学了两个地方 一个是剪枝,如果搜到的当前点的转弯次数小于该点turn数 ...
- HDU - 1728 逃离迷宫(bfs)
题目链接:点击查看 题目大意:给出起点和终点和最多的拐弯次数k,问拐弯次数能否在小于等于k的情况下从起点到达终点 题目分析:bfs,不过和以往的不太一样,以往的bfs都是每次加入一个点,而这个题目的限 ...
- hdu 4524 郑厂长系列故事——逃离迷宫
点击打开链接 郑厂长系列故事--逃离迷宫 T ...
- 逃离迷宫的路径(打印路径)
题目描述 现在有一个5*5的迷宫,起点在左上角,终点在右下角,现在请你来写一个程序计算一下,LZY从起点开始走迷宫,最终能否成功的逃离迷宫? 如果LZY可以逃出迷宫,请输出逃离迷宫的最短路径,否则输出 ...
最新文章
- Android 中Message,MessageQueue,Looper,Handler详解+实例
- 在RHEL7.8上安装配置tomcat
- DL之DNN优化技术:利用Dropout(简介、使用、应用)优化方法提高DNN模型的性能
- 初步了解react-babel-虚拟DOM-JSX-类组件-函数式组件
- 每天Leetcode 刷题 初级算法篇-有效的括号
- 事务到底是隔离的还是不隔离的?
- elasticsearch 请求全部数据
- 【报告分享】 知乎:2020「知+」产品手册(附下载)
- 嘿嘿,长假最后一天!摸鱼一把,我用Python做一个美女消消乐!
- getStyle(getComputedStyle currentstyle) 获取非行间样式函数封装
- 驭龙HIDS的简介,它开源了
- MuMu模拟器开发者文档
- Android Studio配置gradle时或导入别人项目时提示Could not find com.android.tools.build:gradle
- URLEncoder.encode(String url)和URLDecoder.decode(String url)
- 美国一男子起诉苹果:称 iPhone 6 电池存在缺陷导致爆炸
- 二刷剑指Offer:剑指Offer+LeetCode(全53题)
- DSP6678 RapidIO基本原理之一
- Django Template 网页模板(五)
- 【第3版emWin教程】第3章 emWin介绍
- 帝国理工计算机科学硕士学费,去帝国理工学院读研需要几年?一年学费是多少?语言要求都有哪些?...
热门文章
- JAVA Metrics 度量工具使用介绍1
- ios 简单的计时器游戏 NSUserDefaults NSDate NSTimer
- 选择FreeBSD的理由?欢迎新人观看^_^
- 重温Android——调节屏幕亮度
- git 创建webpack项目_近期总结:手动搭建react项目,将项目从自己的库引入到新的项目中使用...
- 自定义一个ImageSwitcher
- The operation cannot be completed. See the details.
- hibernate级联删除问题
- 【HASH】【UVA 10125】 Sumset
- http 性能测试 wrk使用教程