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<iostream> #include<cstdio> #include<queue> #include<cstring> #include<vector> using namespace std; int l0,r0,c0; const int maxn =41; bool have; vector <int> way; char dun[maxn][maxn][maxn]; bool visit[maxn][maxn][maxn];///访问标记 const int dr[]= {-1,0,1,0,0,0}; ///向左上右下 const int dc[]= {0,1,0,-1,0,0}; const int dl[]= {0,0,0,0,1,-1}; struct node { int r; int c,l; int step; }; void bfs(node start) { queue <node> q; /// BFS 队列 node now,next; /// 定义2 个状态,当前和下一个 start.step=0; /// 计数器清零 q.push(start); /// 入队 visit[start.l][start.r][start.c]=1; /// 访问标记 while(!q.empty()) { now=q.front(); q.pop(); if(dun[now.l][now.r][now.c]=='E') { way.push_back(now.step); have=true; return; } for(int i=0; i<6; i++) { next.l=now.l+dl[i], next.r=now.r+dr[i],next.c=now.c+dc[i]; next.step=now.step+1; if(dun[next.l][next.r][next.c]=='E'||dun[next.l][next.r][next.c]=='.'&&visit[next.l][next.r][next.c]==0) { visit[next.l][next.r][next.c]=1; ///printf("%d %d %d\n",next.l,next.r,next.c); q.push(next); } } } return; } int main() { node s; while(~scanf("%d%d%d",&l0,&r0,&c0)&&l0) { memset(dun,0,sizeof(dun)); getchar(); for(int i=0; i<l0; i++) { for(int j=0; j<r0; j++) { gets(dun[i][j]); for(int k=0; k<c0; k++) { if(dun[i][j][k]=='S') { s.l=i,s.r=j,s.c=k,s.step=0; } } } getchar(); } way.clear(); have=false; int mins=10000000; memset(visit,0,sizeof(visit)); bfs(s); if(!have) printf("Trapped!\n"); else { for(vector<int> ::iterator it=way.begin();it!=way.end();++it) mins=min(mins,*it); printf("Escaped in %d minute(s).\n",mins); } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator