hdu 1240 Asteroids!

入队错误,从昨天一直调到今天。先前在这句话

if((temp_x >=0 &&temp_x	< N)&&(temp_y >=0&&temp_y< N)&&(temp_z>=0 &&temp_z< N)&&!visited[temp_z][temp_y][temp_x]){}


是这样:

if(!visited[temp_z][temp_y][temp_x]&&(temp_x >=0 &&temp_x< N)&&(temp_y >=0&&temp_y< N)&&(temp_z>=0 &&temp_z< N)){}


RE了老半天。。。

#include <stdio.h>
#include <string.h> 
struct {
	int x,y,z;
}Q[1200];
int head,tail,step,add_step_flag;
char input[12][12][12];
int visited[12][12][12];
int end_x,end_y,end_z;
int N;
int could_come;
int  bfs(int begin_x,int begin_y,int begin_z){
	int dir[][3] = {
		{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}
	};
	int temp_x,temp_y,temp_z;
	
	if(begin_x== end_x&&begin_y == end_y&&begin_z == end_z){
		return 1;
	}else{
		for(int i = 0; i<6;++i){
			temp_x = begin_x+dir[i][0];
			temp_y = begin_y+dir[i][1];
			temp_z = begin_z+dir[i][2];
			if((temp_x >=0 &&temp_x	< N)&&(temp_y >=0&&temp_y< N)&&(temp_z>=0 &&temp_z< N)&&!visited[temp_z][temp_y][temp_x]){
					visited[temp_z][temp_y][temp_x] = 1;
					Q[tail].x = temp_x;
					Q[tail].y = temp_y;
					Q[tail].z = temp_z;
					++tail;
			}
		}
		++head;
		if(head == add_step_flag){
			++step;
			add_step_flag = tail;
		}
		if(head == tail){
			could_come = 0;
			return 0;
		}
		bfs(Q[head].x,Q[head].y,Q[head].z);
	}
	
}
int main(int argc, char *argv[])
{
	//FILE *fp;	
	//fp = freopen("in2.txt","r",stdin);
	

	char input_tem[11];
	while(~scanf("%s",input_tem)){
		scanf("%s",input_tem);
		if(input_tem[1] == '0'){
			N = 10;
		}else{
			N = input_tem[0] - '0';
		}
		for(int i = 0;i<N;++i){
			for(int j = 0;j<N;++j){
				scanf("%s",input[i][j]);
			}
		}
		memset(visited,0,sizeof(visited));
		memset(Q,0,sizeof(Q));
		for(int  i=0;i<N;++i){
			for(int j = 0;j<N;++j){
				for(int k = 0;k<N;++k){
					if(input[i][j][k]=='X'){
						visited[i][j][k] = 1;
					}
				}
			} 
		}
		
		scanf("%d%d%d",&Q[head].x,&Q[head].y,&Q[head].z);
		scanf("%d%d%d",&end_x,&end_y,&end_z);
		scanf("%s",input_tem); 
		head = 0;
		tail = 1;
		add_step_flag = 1;
		step = 0;
		could_come = 1;
	
		//if(bfs(Q[head].x,Q[head].y,Q[head].z)){
		visited[Q[head].z][Q[head].y][Q[head].x] = 1;
		 
		bfs(Q[head].x,Q[head].y,Q[head].z);
		if(could_come){
			printf("%d %d\n",N,step);
		}else{
			printf("NO ROUTE\n");
		}
		
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值