HDU 1240 Asteroids!
来源:互联网 发布:jas37战斗机 知乎 编辑:程序博客网 时间:2024/05/23 12:40
链接:点击打开链接
和 hdu 1253 胜利大逃亡基本一样,三维bfs,只是输入不同,这里给的起点,终点坐标是z y x,而不是x y z;这里注意一下就可以啦,我就是这里没注意,改错浪费很长时间。。
#include<iostream>#include<stdio.h>#include<queue>#include<string.h>using namespace std;char a[11][11][11];int b[11][11][11],A,B,C,A1,B1,C1,n;int c[6][3]={{0,0,1},{0,0,-1},{1,0,0},{0,1,0},{-1,0,0},{0,-1,0}};struct ss{int x,y,z,flag;};void bfs(){int i,j,k;queue<ss>Q;memset(b,0,sizeof(b));ss p,s;p.x=C1,p.y=B1,p.z=A1,p.flag=0;b[C1][B1][A1]=1;Q.push(p);while(!Q.empty()){p=Q.front();Q.pop();if(p.x==C&&p.y==B&&p.z==A){printf("%d %d\n",n,p.flag);return;}for(i=0;i<6;i++){s=p;s.x+=c[i][0],s.y+=c[i][1],s.z+=c[i][2],s.flag+=1;if(s.x>=0&&s.x<n&&s.y>=0&&s.y<n&&s.z>=0&&s.z<n&&a[s.x][s.y][s.z]=='O'&&!b[s.x][s.y][s.z]){b[s.x][s.y][s.z]=1;Q.push(s);}}} printf("NO ROUTE\n");}int main(){int i,j,k;char str[15];while(cin>>str>>n){for(i=0;i<n;i++) for(j=0;j<n;j++) for(k=0;k<n;k++) cin>>a[i][j][k]; //for(i=0;i<n;i++) //for(j=0;j<n;j++) //for(k=0;k<n;k++)//printf("%c",a[i][j][k]); scanf("%d %d %d",&A1,&B1,&C1); scanf("%d %d %d",&A,&B,&C); cin>>str; bfs();}return 0;}
- hdu 1240 Asteroids!
- HDU-1240-Asteroids!
- hdu 1240 Asteroids!
- hdu 1240 Asteroids!
- Hdu 1240 Asteroids!
- hdu 1240 Asteroids!
- hdu 1240 Asteroids!
- HDU 1240 Asteroids!
- hdu 1240 Asteroids BFS
- HDU 1240 Asteroids!
- hdu 1240 Asteroids!
- hdu-1240-Asteroids!
- HDU 1240 Asteroids!
- hdu 1240 Asteroids!bfs
- Asteroids! HDU 1240
- HDU 1240 Asteroids!(BFS)
- hdu 1240 Asteroids!(BFS)
- HDU 1240 Asteroids!
- 1. SQLite 概要
- Linux centos关机与重启命令详解与实战
- Windows编程经典书
- 喜爱Sahi的10个理由
- JAVA学习三
- HDU 1240 Asteroids!
- HDU1466 计算直线的交点数
- 一步一步学编程之字符串处理函数(二)
- mtk android 预置apk
- 面向对象的5条基本设计原则
- svn基本命令详解
- unity开发shader中要用到的内置状态变量
- linux下常用FTP命令
- 一步步将vim改造成C/C++开发环境(IDE)