hdu_1728_逃离迷宫(bfs)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1728
题意:走迷宫,找最小的拐角
题解:对BFS有了新的理解,DFS+剪枝应该也能过,用BFS就要以拐角作为增量来搜,即以当前点为坐标,4个方向都搜一次,下一次出队,step就要加1
1 #include<cstdio> 2 #include<queue> 3 #include<cstring> 4 using namespace std; 5 #define FFC(i,a,b) for(int i=a;i<=b;i++) 6 int t,m,n,xs,xe,ys,ye,k,dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; 7 struct dt{int x,y,t;}; 8 char g[101][101];bool v[101][101]; 9 bool check(int x,int y){ 10 if(x>n||x<1||y>m||y<1||g[x][y]=='*')return 0; 11 return 1; 12 } 13 bool fuck(){ 14 memset(v,0,sizeof(v)); 15 dt st,o;st.x=xs,st.y=ys,st.t=-1; 16 v[xs][ys]=1; 17 queue<dt>Q;Q.push(st); 18 while(!Q.empty()){ 19 o=Q.front();Q.pop(); 20 if(o.x==xe&&o.y==ye&&o.t<=k)return 1; 21 o.t++; 22 for(int i=0;i<4;i++){ 23 int xx=o.x+dir[i][0],yy=o.y+dir[i][1]; 24 while(check(xx,yy)){ 25 if(!v[xx][yy]){st.x=xx,st.y=yy,st.t=o.t,v[xx][yy]=1;Q.push(st);} 26 xx+=dir[i][0],yy+=dir[i][1]; 27 } 28 } 29 } 30 return 0; 31 } 32 int main(){ 33 int t; 34 scanf("%d",&t); 35 while(t--){ 36 scanf("%d%d",&n,&m); 37 FFC(i,1,n){ 38 getchar(); 39 FFC(j,1,m)scanf("%c",&g[i][j]); 40 } 41 scanf("%d%d%d%d%d",&k,&ys,&xs,&ye,&xe); 42 if(fuck())puts("yes"); 43 else puts("no"); 44 45 } 46 return 0; 47 }
View Code
转载于:https://www.cnblogs.com/bin-gege/p/5696167.html
hdu_1728_逃离迷宫(bfs)相关推荐
- hdu 1728 逃离迷宫 (bfs)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU - 1728 逃离迷宫(bfs)
题目链接:点击查看 题目大意:给出起点和终点和最多的拐弯次数k,问拐弯次数能否在小于等于k的情况下从起点到达终点 题目分析:bfs,不过和以往的不太一样,以往的bfs都是每次加入一个点,而这个题目的限 ...
- 逃离迷宫 ( BFS /DFS)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- hdoj 1728 逃离迷宫
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 逃离迷宫的路径(打印路径)
题目描述 现在有一个5*5的迷宫,起点在左上角,终点在右下角,现在请你来写一个程序计算一下,LZY从起点开始走迷宫,最终能否成功的逃离迷宫? 如果LZY可以逃出迷宫,请输出逃离迷宫的最短路径,否则输出 ...
- hdu 4524 郑厂长系列故事——逃离迷宫
点击打开链接 郑厂长系列故事--逃离迷宫 T ...
- 郑厂长系列故事——逃离迷宫(C语言)
郑厂长没变 还是那个假厂长真码农改变的是业余爱好 他现在不研究象棋,改玩游戏了! 最近,郑厂长爱上了逃离迷宫这个游戏,他日日夜夜的玩,就是想达到自己的目标:1000万,因为这个数字和他在腾讯的年收入一 ...
- 杭电4524-郑厂长系列故事——逃离迷宫
郑厂长系列故事--逃离迷宫 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...
- 献给阿尔吉侬的花束(二刷,迷宫bfs,模板题)
文章目录 Question Ideas Code Question 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫. 今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终 ...
最新文章
- find中的-print0和xargs中-0的奥妙
- 计算机网络按信号频带占用方式分为,《计算机网络及组网技术》第2阶段测试题....
- Love2D游戏引擎制作贪吃蛇游戏
- ANN:DNN结构演进History—LSTM网络
- 面试--输入一堆随机数(0-1000),这里面会有重复的数字,把他们去除掉。然后由大到小排列。
- Codis 分布式缓存部署
- Java I/O 扩展
- 青岛大学计算机科学技术学院官网,田呈亮 - 青岛大学 - 计算机科学技术学院
- uniapp 分享缩略图过大怎么办_经验分享| 反击破转子断裂的应急处理方法
- 如何自定义苹果Mac睡眠时间,掌握作息?
- struts1.x 标签库
- 999999数码管显示c语言,定时器1中断动态刷新从999999~0倒计时,数码管只显示有效位的C语言程序怎么编?...
- 如何快速进行十进制二进制转换
- 利用C语言编程输出小写英文字母表的大写形式(以5为间隔)
- 吞食天地2忘云殇8.77图文攻略
- 5款高效率,但是名气不大的小众软件
- ESR-CMDS参数含义
- 斯巴达300勇士 中英文对照
- Python中带“symmetric_”前缀的方法的特点
- 为什么你需要辞职了?——辞职的十大理由
热门文章
- 学习mysql中使用inner join,left join 等
- linux原理 培训,Linux容器技术原理和使用
- 程序人生:教你写出让同事抓狂的代码
- 生产三码 黑苹果_黑苹果OC配置工具:OpenCore Configurator v2.15.2.0
- cserialport 循环发送信号_C++信号处理
- mysql实用管理器添加外键_MySQL 添加外键
- linux进程---exec族函数(execl, execlp, execv, execvp, )解释和配合fork的使用
- nginx php7提速,nginx+php7-fpm 性能提升几倍跟踪实践结果并优化
- ai中导入sketch_在Sketch中营造深度感
- JavaScript 断点调试技巧