| ||||||||||
| 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 | |||||||||
Re:天呐,数组开小了,就一直给我WAIn Reply To:哪位高手帮忙看看哪里错了啊! Posted by:Jeymar at 2011-08-19 20:40:17 > # include <iostream>
> # include <string.h>
> using namespace std;
>
> char D[30][30][30]={0};
> bool used[30][30][30];
> int dx[6]={-1,0,0,0,0,1};
> int dy[6]={0,-1,0,0,1,0};
> int dz[6]={0,0,-1,1,0,0};
> int l=0,r=0,c=0;
> int sx,sy,sz,ex,ey,ez;
> int time=0;
>
> struct point
> {
> int x,y,z;
> };
>
> struct point qu[100000];
>
> void bfs()
> {
> int head=0,tail=0,head2=0,i=0;
> bool reach=false;
> memset(qu,0,sizeof(qu));
> qu[head].x=sx;
> qu[head].y=sy;
> qu[head].z=sz;
> head++;
> used[sx][sy][sz]=true;
> while(tail < head)
> {
> if(used[ex][ey][ez])
> {
> reach=true;
> break;
> }
> head2=head;
> time++;
> while(tail < head2)
> {
> struct point tem1=qu[tail];
> tail++;
> for(i=0;i<6;i++)
> {
> struct point tem2;
> tem2.x=tem1.x+dx[i];
> tem2.y=tem1.y+dy[i];
> tem2.z=tem1.z+dz[i];
> if(tem2.x>=0 && tem2.y>=0 && tem2.z>=0 && tem2.x<l && tem2.y<r && tem2.z<c && D[tem2.x][tem2.y][tem2.z] != '#' && !used[tem2.x][tem2.y][tem2.z])
> {
> used[tem2.x][tem2.y][tem2.z]=true;
> qu[head]=tem2;
> head++;
> }
> }
> }
> }
> if(reach == false)
> time=-1;
> }
>
> int main()
> {
> int i=0,j=0,k=0;
> while(scanf("%d%d%d",&l,&r,&c)!=EOF && l && r && c)
> {
> memset(used,0,sizeof(used));
>
> for(i=0;i<l;i++)
> {
> for(j=0;j<r;j++)
> {
> scanf("%s",D[i][j]);
> }
> }
> for(i=0;i<l;i++)
> {
> for(j=0;j<r;j++)
> {
> for(k=0;k<c;k++)
> {
> if(D[i][j][k] == 'S')
> {
> sx=i;
> sy=j;
> sz=k;
> }
> else if(D[i][j][k] == 'E')
> {
> ex=i;
> ey=j;
> ez=k;
> }
> }
> }
> }
> time=0;
> bfs();
> if(time==-1)
> printf("Trapped!\n");
> else
> printf("Escaped in %d minute(s).\n",time);
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator