周赛 简单的bfs
来源:互联网 发布:java 格式化上午下午 编辑:程序博客网 时间:2024/06/06 11:28
主页讨论版问题名次状态统计
MZY寻宝
题目描述
贪心的MZY去一个迷宫寻宝。已知:若MZY在位置(x, y),他下一次只能移动到(x-1, y)、(x+1, y)、(x, y-1)、(x, y+1)四个位置中的任一个(前提不能越界)。
毕竟他不是我,我可以直接飞到宝物那里去。由于MZY比较笨拙,他移动一步需要1分钟。请你帮他算出找到宝物所需要花费的最少时间。
迷宫是一个N*M的地图,图中只有四个数字。
0:此处是空的,可以走
1:此处有障碍,不可以走
2:MZY起点
3:宝物位置(只有一个宝物)
题目保证CZY至少有一条路可以到达宝物位置。
输入
输入数据有多组。
每组以两个整数N和M开始,分别表示迷宫的行数和列数,接下来N行每行有M个数。(1 <= N, M <= 10)
输出
输出MZY找到宝物的最少需要花费的时间。(以秒为单位)
样例输入
2 20 21 3
搜索
//这道题我换了许多的方法一直wa,最后才发现循环漏了一种情况,<4,我写成了<3,参考代码如下:
#include<stdio.h>#include<queue>#include<string.h>#include<algorithm>using namespace std;struct node{int x,y,step; friend bool operator<(node a,node b) { return (a.step>b.step); }} a,b;int mp[1000][1000];int vis[1000][1000];int dis[1000][1000];int n,m,ex,ey,bx,by,ans;int dx[4]={-1,1,0,0};int dy[4]={0,0,1,-1};int jug(int x,int y){ if(x<1||x>m) return 0; if(y<1||y>n) return 0; if(mp[x][y]==1||vis[x][y]==1) return 0; return 1;}int bfs(int x,int y){ priority_queue<node>q; a.x=x; a.y=y; a.step=0; vis[a.x][a.y]=1; q.push(a); while(!q.empty()) { int i; a=q.top(); q.pop(); for( i=0;i<4;i++) { b.x=a.x+dx[i]; b.y=a.y+dy[i]; if(jug(b.x,b.y)) { dis[b.x][b.y]=dis[a.x][a.y]+1; vis[b.x][b.y]=1; b.step=dis[b.x][b.y]; q.push(b); } } }}int main(){while(scanf("%d%d",&n,&m)!=EOF){ memset(vis,0,sizeof(vis)); memset(dis,0,sizeof(dis)); int i,j;for(j=1;j<=n;j++) for(i=1;i<=m;i++) { scanf("%d",&mp[i][j]); if(mp[i][j]==2) bx=i,by=j; if(mp[i][j]==3) ex=i,ey=j; } bfs(bx,by); printf("%d\n",dis[ex][ey]*60);}}
0 0
- 周赛 简单的bfs
- hdu1372-简单的BfS
- Java 简单的BFS爬虫
- hdu1548-还是简单的bfs
- poj3278(简单的bfs)
- Java 简单的BFS爬虫
- hdu 1548 简单的bfs
- 简单的BFS学习笔记
- BFS专攻:POJ 3278 (三个方向的简单BFS)
- 简单bfs
- 简单bfs
- poj 1562 简单的BFS搜索
- 简单的BFS A strange lift
- hdu1175简单的搜索(bfs法)
- Oil Deposits(hdu1241简单的bfs)
- HDU 1372Knight Moves(简单的BFS)
- hdu 1026 简单的bfs
- HDU 1175 连连看 简单的BFS
- NEUQ 1466: Huybery玩转模运算
- SDL播放yuv数据
- PageRank及其MapReduce实现
- [学习笔记]JavaScript基础--淡入淡出
- muduo::TcpConnection分析
- 周赛 简单的bfs
- 设计原则之开放闭合原则(OCP)
- codeforces Round #Pi (div.2) 567ABCD
- 富甲天下3存档修改
- 用户'sa'登录失败(DataGridView)
- OC学习笔记
- 简历
- 模拟 codeforces567B Berland National Library
- 黑马程序员---struts2学习笔记之七(表单验证)