| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么一直内存超出限制。。。。。。。。求大神解答#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
struct Node{
int x,y,z,num;
Node(int zz = 0,int xx = 0,int yy = 0,int step = 0) : z(zz),x(xx),y(yy),num(step){}
};
char t,mp[35][35][35];
int l,r,c,t1,t2,t3,ans,next[6][3] = {{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
int bfs(int z,int x,int y){
Node p;
int vis[35][35][35];
memset(vis,0,sizeof(vis));
queue <Node> Q;
vis[z][x][y] = true;
Q.push(Node(z,x,y,0));
while(!Q.empty()){
p = Q.front();
Q.pop();
for(int i = 0;i < 6;i++){
int tz = p.z + next[i][0];
int tx = p.x + next[i][1];
int ty = p.y + next[i][2];
if(tz < 0 || tz >= l || tx < 0 || tx >= r || ty < 0 || ty >= c)
continue;
if(mp[tz][tx][ty] == '.' && vis[tz][tx][ty] == false){
vis[tz][tx][ty] == true;
Q.push(Node(tz,tx,ty,p.num + 1));
}
if(mp[tz][tx][ty] == 'E'){
return p.num + 1;
}
}
}
return 0;
}
int main(){
while(~scanf("%d %d %d",&l,&r,&c)){
if(!l && !r && !c)
break;
for(int i = 0;i < l;i++){
for(int j = 0;j < r;j++){
getchar();
for(int k = 0;k < c;k++){
scanf("%c",&mp[i][j][k]);
if(t == 'S')
t1 = i,t2 = j,t3 = k;
}
}
getchar();
}
ans = bfs(t1,t2,t3);
ans == 0 ? printf("Trapped!\n") : printf("Escaped in %d minute(s).\n",ans);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator