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 |
高手看一下,我的BFS哪错了??我的测试数据都对呀!!!#include <stdio.h> #include <string.h> struct POS { int x,y,z; }; POS move[7]; POS from,end,now,next; POS queue[35*30*30]; int front,rear; bool maze[35][35][35]; int L,R,C; char p; int i,j,k; int v; int count; void main() { freopen("1.txt","r",stdin); move[1].x=-1; move[1].y=0; move[1].z=0; move[2].x=0; move[2].y=-1; move[2].z=0; move[3].x=0; move[3].y=0; move[3].z=1; move[4].x=0; move[4].y=1; move[4].z=0; move[5].x=0; move[5].y=0; move[5].z=-1; move[6].x=1; move[6].y=0; move[6].z=0; scanf("%d%d%d",&L,&R,&C); while(L!=0 && R!=0 && C!=0) { memset(maze,1,sizeof(bool)*35*35*35); count=-1; scanf("%c",&p); for(i=1;i<=L;i++) { for(j=1;j<=R;j++) { for(k=1;k<=C;k++) { scanf("%c",&p); if(p=='#') maze[i][j][k]=1; else if(p=='.') maze[i][j][k]=0; else if(p=='S') { maze[i][j][k]=0; from.x=i; from.y=j; from.z=k; } else if(p=='E') { maze[i][j][k]=0; end.x=i; end.y=j; end.z=k; } } scanf("%c",&p); } scanf("%c",&p); } front=rear=1; queue[rear].x=from.x; queue[rear].y=from.y; queue[rear].z=from.z; maze[from.x][from.y][from.z]=1; while(front<=rear) { now.x=queue[front].x; now.y=queue[front].y; now.z=queue[front].z; count++; for(v=1;v<=6;v++) { next.x=now.x+move[v].x; next.y=now.y+move[v].y; next.z=now.z+move[v].z; if(!maze[next.x][next.y][next.z]) { rear++; queue[rear].x=next.x; queue[rear].y=next.y; queue[rear].z=next.z; maze[next.x][next.y][next.z]=1; if(next.x==end.x && next.y==end.y && next.z==end.z) { count--; goto LL; } } } front++; } if(front>rear) printf("Trapped!\n"); else LL: printf("Escaped in %d minute(s).\n",count); scanf("%d%d%d",&L,&R,&C); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator