HDU-1278-逃离迷宫
HDU-1278-逃离迷宫
http://acm.hdu.edu.cn/showproblem.php?pid=1728
不好想,参考别的代码写的,题目要求转弯的次数不能超过k,BFS,从一个方向搜到底
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
using namespace std;
int n1,n2,k;
char map[105][105];
int visit[105][105];
struct node
{int x;int y;int turn;
};
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int go(int x,int y)
{if(1<=x&&x<=n1&&1<=y&&y<=n2&&map[x][y]=='.')return 1;return 0;
}
void bfs(node s1,node s2)
{queue<node>q;node st,ed;int i,nextx,nexty;memset(visit,0,sizeof(visit));st.x=s1.x;st.y=s1.y;st.turn=-1;q.push(st);while(!q.empty()){st=q.front();q.pop();for(i=0;i<4;i++){nextx=st.x+dir[i][0];nexty=st.y+dir[i][1];while(go(nextx,nexty)){if(!visit[nextx][nexty]){visit[nextx][nexty]=1;ed.x=nextx;ed.y=nexty;ed.turn=st.turn+1;if(ed.x==s2.x&&ed.y==s2.y&&ed.turn<=k){printf("yes\n");return;}q.push(ed);}nextx+=dir[i][0];nexty+=dir[i][1];}}}printf("no\n");return;
}
int main()
{int t,i,j;node s1,s2;scanf("%d",&t);while(t--){scanf("%d%d",&n1,&n2);for(i=1;i<=n1;i++){getchar();for(j=1;j<=n2;j++)scanf("%c",&map[i][j]);}scanf("%d%d%d%d%d",&k,&s1.y,&s1.x,&s2.y,&s2.x);if(s1.y==s2.y&&s1.x==s2.x)printf("yes\n");elsebfs(s1,s2);}return 0;
}
HDU-1278-逃离迷宫相关推荐
- 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 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 ...
- 逃离迷宫 ( 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可以逃出迷宫,请输出逃离迷宫的最短路径,否则输出 ...
最新文章
- org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuEx
- 在EORow或者VORow中对数据进行重复性校验
- python3多进程爬虫(第二卷)
- 简单明了学习SQL CTE递归查询
- 用java编写一个故事的程序_使用Java怎么编写一个递归程序
- html div右下浮动,div 初始化及左右浮动
- Ubuntu、SUSE的发音
- 嵌入式芯片调试神器-J-Link RTT详解
- python下载电影天堂视频_Python抓取电影天堂电影信息的代码
- 520到了,教你做个JavaWeb表白墙小项目
- Windows动态链接库使用详解
- 美团外卖饿了么竞品分析:共生存?还是你死我亡?
- 超微服务器主板ipmi证书,超微主板的服务器使用IPMI远程安装操作系统教程
- 日式风格小荷才露尖尖角
- 横屏模式下,编辑手机联系人添加图片,保存后联系人头像与之前默认的图片重叠或者是有阴影在头像上
- 在matlab中使用spm8,[转载]在matlab中同时使用spm2,spm5,spm8
- MySQL的索引(聚簇索引和非聚簇索引)
- 复习对数函数相关知识
- 离散数学(1)---集合论
- 图像处理:比特平面分层