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 |
我不能发现错误啊,高手快来啊这个代码我也测试过几个数据 都行啊 可还是WA 我用状态数组代替了队列 #include<stdio.h> #include<stdlib.h> int sum,l,r,h; int arr[35][35][35],sign[35][35][35]; char s[35][35][35]; int f() { int a,b,c,flag=0,flag1=0; sum++; for(a=0;a<l;a++) { for(b=0;b<r;b++) { for(c=0;c<h;c++) if(sign[a][b][c]==sum) { sign[a][b][c]=0; if(s[a-1][b][c]!='#'&&a>0&&arr[a-1][b][c]==0) { flag1=1; arr[a-1][b][c]=1; sign[a-1][b][c]=sum+1; if(s[a-1][b][c]=='E') { flag=1; flag1=0; break; } //printf("%d %d %d %d\n",a-1,b,c,sum); } if(s[a+1][b][c]!='#'&&a+1<l&&arr[a+1][b][c]==0) { flag1=1; arr[a+1][b][c]=1; sign[a+1][b][c]=sum+1; if(s[a+1][b][c]=='E') { flag=1; flag1=0; break; } //printf("%d %d %d %d\n",a+1,b,c,sum); } if(s[a][b-1][c]!='#'&&b>0&&arr[a][b-1][c]==0) { flag1=1; arr[a][b-1][c]=1; sign[a][b-1][c]=sum+1; if(s[a][b-1][c]=='E') { flag=1; flag1=0; break; } //printf("%d %d %d %d\n",a,b-1,c,sum); } if(s[a][b+1][c]!='#'&&b+1<r&&arr[a][b+1][c]==0) { flag1=1; arr[a][b+1][c]=1; sign[a][b+1][c]=sum+1; if(s[a][b+1][c]=='E') { flag=1; flag1=0; break; } //printf("%d %d %d %d\n",a,b+1,c,sum); } if(s[a][b][c-1]!='#'&&c>0&&arr[a][b][c-1]==0) { flag1=1; arr[a][b][c-1]=1; sign[a][b][c-1]=sum+1; if(s[a][b][c-1]=='E') { flag=1; flag1=0; break; } //printf("%d %d %d %d\n",a,b,c-1,sum); } if(s[a][b][c+1]!='#'&&c+1<h&&arr[a][b][c+1]==0) { flag1=1; arr[a][b][c+1]=1; sign[a][b][c+1]=sum+1; if(s[a][b][c+1]=='E') { flag=1; flag1=0; break; } //printf("%d %d %d %d\n",a,b,c+1,sum); } } if(flag)break; } if(flag)break; } if(flag1)flag=f(); return flag; } int main() { int i,j,k,flag; while(1) { for(i=0;i<35;i++) for(j=0;j<35;j++) for(k=0;k<35;k++) { arr[i][j][k]=0; sign[i][j][k]=0; } scanf("%d%d%d",&l,&r,&h); if(l==0||r==0||h==0)break; getchar(); for(i=0;i<l;i++) { for(j=0;j<r;j++) { scanf("%s",&s[i][j]); getchar(); //printf("%s\n",s[i][j]); } getchar(); } for(i=0;i<l;i++) { for(j=0;j<r;j++) { for(k=0;k<h;k++) if(s[i][j][k]=='S') { flag=1; break; } if(flag)break; } if(flag)break; } sum=0; arr[i][j][k]=1; sign[i][j][k]=1; flag=f(); if(flag)printf("Escaped in %d minute(s).\n",sum); else printf("Trapped!\n"); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator