HDU 1240 Asteroids!
来源:互联网 发布:设ab均为二阶矩阵 编辑:程序博客网 时间:2024/06/06 03:08
题目地址:点击打开链接
思路:三维空间求最短路,输入输出有点蛋疼啊
AC代码:
#include <iostream>#include<queue>#include<cstring>using namespace std;struct node{ int x,y,z,step;}cf[1010];int visit[15][15][15];char map[15][15][15];int n,endi,endj,endk;int dir[][3] = {{0,-1,0},{1,0,0},{0,1,0},{-1,0,0},{0,0,1},{0,0,-1}};bool judge(int x,int y,int z){ if(x>=0 && y>=0 && z>=0 && x<n && y<n && z<n && !visit[x][y][z] && map[x][y][z] != 'X') return true; return false;}void bfs(int x,int y,int z){ int i; queue<node> q; node in,out; in.x = x; in.y = y; in.z = z; in.step = 0; q.push(in); while(!q.empty()) { out = q.front(); q.pop(); if(out.x == endi && out.y == endj && out.z == endk) { cout<<n<<" "<<out.step<<endl; return; } for(i=0; i<6; i++) { in.x = out.x + dir[i][0]; in.y = out.y + dir[i][1]; in.z = out.z + dir[i][2]; if(judge(in.x,in.y,in.z)) { in.step = out.step + 1; visit[in.x][in.y][in.z] = 1; q.push(in); } } } cout<<"NO ROUTE"<<endl;}int main(){ char s[10]; int i,j,k,starti,startj,startk; while(cin>>s>>n) { memset(visit,0,sizeof(visit)); for(k=0; k<n; k++) { for(i=0; i<n; i++) { for(j=0; j<n; j++) { cin>>map[i][j][k]; } } } cin>>starti>>startj>>startk>>endi>>endj>>endk; cin>>s; visit[starti][startj][startk] = 1; bfs(starti,startj,startk); } return 0;}
0 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!
- Oracle分页
- HDOJ A New Tetris Game 1760【SG函数】
- 对kmp算法的一个小小的总结
- 【转载】Java如何实现文件打包下载功能
- [笔记][思维导图]读深入理解JAVA内存模型整理的思维导图
- HDU 1240 Asteroids!
- 线程池的实现
- 常用渗透测试系统
- 模块化设计实例
- mysql创建索引
- 使用maven,Apache ServiceMix开发OSGI web例子
- 流程控制语句
- mysql数据库中的索引有那些、有什么用
- 无监督和有监督算法的区别