HDU1240 Asteroids!(BFS)
来源:互联网 发布:sketch mac 汉化补丁 编辑:程序博客网 时间:2024/05/20 00:53
题解:
三维BFS,和胜利大逃亡差不多
代码
#include <string.h>#include <stdio.h>#include <queue>using namespace std;char map[20][20][20];int vis[20][20][20];int n;int sx,sy,sz;int ex,ey,ez;int tx[] = {1,-1,0,0,0,0};int ty[] = {0,0,1,-1,0,0};int tz[] = {0,0,0,0,1,-1};struct node{ int x,y,z,step;};int check(int x,int y,int z){ if(x<0 || y<0 || z<0 || x>=n || y>=n || z>=n || vis[x][y][z] ) return 0; return 1;}int bfs(int x,int y,int z){ int i; queue<node> Q; node a,next; a.x = x; a.y = y; a.z = z; a.step = 0; vis[x][y][z] = 1; Q.push(a); while(!Q.empty()) { a = Q.front(); Q.pop(); if(a.x == ex && a.y == ey && a.z == ez) return a.step; for(i = 0;i<6;i++) { next = a; next.x+=tx[i]; next.y+=ty[i]; next.z+=tz[i]; if(check(next.x,next.y,next.z)) { next.step++; vis[next.x][next.y][next.z] = 1; Q.push(next); } } } return -1;}int main(){ char s[10]; int i,j,k; while(~scanf("%s%d",s,&n)) { for(i = 0;i<n;i++) for(j = 0;j<n;j++) scanf("%s",map[i][j]); scanf("%d%d%d%d%d%d",&sx,&sy,&sz,&ex,&ey,&ez); scanf("%s",s); int ans = bfs(sx,sy,sz); if(ans>=0) printf("%d %d\n",n,ans); else printf("NO ROUTE\n"); } return 0;}
0 0
- HDU1240:Asteroids!(BFS)
- hdu1240 Asteroids! (BFS)
- HDU1240 Asteroids!(BFS)
- hdu1240 Asteroids!--DFS & BFS
- HDU1240 Asteroids!(BFS)
- BFS---HDU1240 Asteroids!
- HDU1240(BFS)Asteroids!
- Hdu1240 Asteroids!(三维BFS)
- Hdu1240 Asteroids!(BFS) ---Java版
- hdu1240 Asteroids!(三维bfs水)
- HDU1240 Asteroids!
- hdu1240 Asteroids!
- HDU1240:Asteroids!
- hdu1240 Asteroids!
- hdu1240 Asteroids!
- HDU1240:Asteroids
- ACM-三维BFS之Asteroids!——hdu1240
- HDU1240 Asteroids!-题目意思详解( 三维BFS)
- 字节流的读和写
- ios基本控件之UIScrollView
- 快速合并同一个excel表中的多个sheet
- Java 信号量 Semaphore 介绍
- 关于js单线程的问题
- HDU1240 Asteroids!(BFS)
- 10、异常
- Bootstrap复习二——栅格系统(form表单示例)
- angular js过滤器
- ios基本控件之UISlide
- jquery.qrcode生成二维码
- 3196: Tyvj 1730 二逼平衡树
- ios基本控件之UISegmentControl
- BitnamiGitLab升级以及Troubledshooting