题意:从,左上后角->右上前角,的最短时间是否满足题目给出的时间,满足输出最短时间,否输出-1.
输入数据比较难理解:
A B C可以理解为对应输入的A->x轴的单位长度,B->z轴的单位长度(方向向向下),C->y轴的单位长度.
注:左上后角作为坐标原点。
3 3 4 200 1 1 10 0 1 10 1 1 1//第一块
1 1 1 11 0 0 10 1 1 1//第二块
0 0 0 00 1 1 00 1 1 0//第三块
解法:广搜,队列
峰注:进队列后必须马上标记。
ac代码:
View Code
#include#include #include using namespace std;struct node{ int x,y,z; int t;};const int m=51;int x,y,z,t;int map[m][m][m],dir[6][3]={ 0, 0, 1,0, 0,-1,0, 1, 0,0,-1, 0,1, 0, 0,-1, 0, 0}; //正方体六个面的方向,注:z轴方向:向下// 方向:下,上,右,左,前,后int check(int i,int j,int k) //判断是否出界,(即是否在正方体内){ if(i>=0&&i =0&&j =0&&k q; node temp; int n; int i,j,k; while(cin>>n) { for(int l=0;l >x>>y>>z>>t; for(i=0;i