为什么出现编译错误?
查看原帖
为什么出现编译错误?
430773
debug_noob楼主2020/12/4 23:43
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<queue>
#define inf 9999999
using namespace std;
struct node{
	int x,y,z,step;//出发点到该点的步数 
};
node start,end,current,next;
bool flag;
int l,r,c,m;
char s[31][31][31];
int visit[31][31][31];//记录是否访问 
int dir[6][3] = { {-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1} };
bool check(int x,int y,int z){
	if(x>=1 && y>=1 && z>=1 &&x<=c && y<=r && z<=l && (!visit[z][y][x]) &&(s[z][y][x]=='.' || s[z][y][x]=='E'))
	return true;	
	else return false;
}
bool success(node a){
	if(a.x==end.x&&a.y==end.y&&a.z==end.z) return true;
	else return false;
}
void bfs(){  //广度搜索 
	queue<node>q;
	q.push(start);
	while(!q.empty()){
		current=q.front();
		q.pop();
		if(success(current)){
			flag=true;
		 end.step=min(end.step,current.step);
		 return;
		 }	
		else{
			visit[current.z][current.y][current.x]=1;
			for(int i=0;i<6;i++){
				next.x=current.x+dir[i][0];
				next.y=current.y+dir[i][1];
				next.z=current.z+dir[i][2];
				if(check(next.x,next.y,next.z)){
				next.step=current.step+1;
				visit[next.z][next.y][next.x]=1;
				q.push(next);}
			}
	}
	}
}
int main(){
	while(~scanf("%d%d%d",&l,&r,&c)){
		if(l==0 && r==0 && c==0)  break;
		getchar();
		for(int i=1;i<=l;i++){
			for(int u=1;u<=r;u++){
				for(int k=1;k<=c;k++){
				scanf("%c",&s[i][u][k]);
				if(s[i][u][k]=='S'){start.x=k;start.y=u;start.z=i;start.step=0;}
				if(s[i][u][k]=='E'){end.x=k;end.y=u;end.z=i;}
				}
				getchar();
			
			}	
		}
		end.step=inf;
		memset(visit,0,sizeof(visit));
		flag=false;
		bfs();
		if(flag) printf("Escaped in %d minute(s).\n",end.step);
		else printf("Trapped!\n");
		
		
		
	}
	return 0;	
}
2020/12/4 23:43
加载中...