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:我不能发现错误啊,高手快来啊In Reply To:我不能发现错误啊,高手快来啊 Posted by:xujiaming at 2008-07-09 16:03:19 > 这个代码我也测试过几个数据 > 都行啊 > 可还是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