郁闷,三维搜索--输出总是0,原来少了个‘%d’,浪费了几个小时!还少删了测试函数,输出竟然是‘jj’。太jj了、
#include<stdio.h>#include<queue>using namespace std;
struct Node{ int x; int y; int z; int num;};int map[55][55][55];int mark[55][55][55];int a,b,c,t,sign;int dir[6][3]={{0,0,1},{0,1,0},{1,0,0},{-1,0,0},{0,-1,0},{0,0,-1}};void bfs(){ queue<Node>Q; sign=0; int i; Node s,p,e; s.x=0; s.y=0; s.z=0; s.num=0; Q.push(s); mark[s.x][s.y][s.z]=0; while(!Q.empty()){ p=Q.front(); Q.pop(); for(i=0;i<6;i++){ e.x=p.x+dir[i][0]; e.y=p.y+dir[i][1]; e.z=p.z+dir[i][2]; e.num=p.num+1; if((e.x>=0&&e.x<a)&&(e.y>=0&&e.y<b)&&(e.z>=0&&e.z<c)&&map[e.x][e.y][e.z]!=1&&mark[e.x][e.y][e.z]==-1){ if(e.x==a-1&&e.y==b-1&&e.z==c-1){ if(e.num<=t){ sign=1; printf("%d/n",e.num); return ; } } mark[e.x][e.y][e.z]=0; Q.push(e); } } } if(sign==0)printf("-1/n");}main(){ int i,j,u,k;
scanf("%d",&k); while(k--){ scanf("%d%d%d%d",&a,&b,&c,&t);//少加了个‘%d’,一失足成千古恨!!!!!!!! for(i=0;i<a;i++) for(j=0;j<b;j++) for(u=0;u<c;u++){ mark[i][j][u]=-1; scanf("%d",&map[i][j][u]); } if(map[a-1][b-1][c-1]==1)
{
printf("-1/n");
continue;
}
if(a==1&&b==1&&c==1){ printf("0/n"); continue; } bfs(); } return 0;}