HDU 1253 胜利大逃亡 广搜
2012-09-04 17:29
387 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1253
题意:
一个三维的空间坐标分别表示为(x,y,z),Ignatius要从(0,0,0)开始逃,要到出口(A-1,B-1,C-1),他只能往6个方向走(上下左右前后),每走一步算
一个单位时间,要在魔王回来的时候内走到出口(刚好也算逃出)。
坑爹:
这题的数据很恶心,害我WA了很多次,当A==B==C==1的时候也就是入口就是出口的时候,要分入口(出口)是不是墙,如果是则不能逃出,反之可以逃出,
解法:
广搜。
View Code
题意:
一个三维的空间坐标分别表示为(x,y,z),Ignatius要从(0,0,0)开始逃,要到出口(A-1,B-1,C-1),他只能往6个方向走(上下左右前后),每走一步算
一个单位时间,要在魔王回来的时候内走到出口(刚好也算逃出)。
坑爹:
这题的数据很恶心,害我WA了很多次,当A==B==C==1的时候也就是入口就是出口的时候,要分入口(出口)是不是墙,如果是则不能逃出,反之可以逃出,
解法:
广搜。
View Code
#include<iostream> #include<queue> using namespace std; const int MAXN = 50 + 10 ; int K[MAXN][MAXN][MAXN]; int map[6][3] ={ 1,0,0 , -1,0,0 , 0,1,0 , 0,-1,0 , 0,0,1 , 0,0,-1 }; struct node { int x; int y; int z; int step; }; int main() { int T; int A; int B; int C; int N; cin>>N; queue <node> q; while(N--) { scanf("%d%d%d%d",&A,&B,&C,&T); memset(K,0,sizeof(K)); for(int i = 0 ; i < A ; i ++) { for(int j = 0 ; j < B ; j++ ) { for(int k = 0 ; k < C ; k ++ ) { scanf("%d",&K[i][j][k]); } } } if(A == 1 && B == 1 && C == 1) { if(K[0][0][0] == 1 ) { cout<<"-1"<<endl; } else { cout<<"0"<<endl; } continue; } /* if(K[0][0][0] == 1 ) { cout<<"-1"<<endl; continue; } */ node a; a.x = 0 ; a.y = 0 ; a.z = 0 ; a.step = 0 ; K[0][0][0] = 1 ; q.push(a); int count = 0; while( !q.empty() ) { a = q.front(); q.pop(); // cout<<"****"<<a.x<<" "<<a.y<<" "<<a.z<<" "<<a.step<<endl; if(a.x == A - 1 && a.y == B - 1 && a.z == C - 1 ) { count = 1; if(a.step <= T ) { cout<<a.step<<endl; } else { cout<<"-1"<<endl; } break; } for( i = 0 ; i < 6 ; i ++ ) { node b; b.x = a.x + map[i][0]; b.y = a.y + map[i][1]; b.z = a.z + map[i][2]; if( b.x >= 0 && b.x < A && b.y >= 0 && b.y < B && b.z >= 0 && b.z < C ) { if( K[b.x][b.y][b.z] == 0 ) { K[b.x][b.y][b.z] = 1 ; b.step = a.step + 1 ; q.push(b); } } } } if(!count) { cout<<"-1"<<endl; } while(!q.empty()) { q.pop(); } } return 0; }
相关文章推荐
- HDU--1253胜利大逃亡【BFS】
- HDU-1253-胜利大逃亡
- HDU 1253 胜利大逃亡(三维数组+bfs)
- HDU 1253 胜利大逃亡
- HDU 1253 胜利大逃亡
- hdu 1253 胜利大逃亡(三维bfs)
- hdu 1253 胜利大逃亡(广搜)
- hdu 1253 胜利大逃亡
- HDU 胜利大逃亡 1253 BFS
- HDU 1253 胜利大逃亡(空间BFS)
- HDU 1253 胜利大逃亡 三维BFS
- hdu 1253 胜利大逃亡
- HDU-1253 胜利大逃亡
- 搜索专题(BFS)HDU 1253-胜利大逃亡
- HDU 1253 胜利大逃亡
- HDU 1253 (BFS) 胜利大逃亡
- hdu - 1240 Nightmare && hdu - 1253 胜利大逃亡(bfs)
- hdu 1253 ( 胜利大逃亡 )
- HDU-#1253 胜利大逃亡(BFS+优化)
- HDU 1253 胜利大逃亡【广搜】