HDU-1240 Asteroids!( 三维 )
题意
已知起点(A,B,C)和终点(D,E,F),在三维空间求最短可由起点到达终点的路径,还需判断有无办法到达。
thinking
用广度优先搜索遍历可行走的路径,如果有一个到达则停止遍历,最先到达的为最短的行走路径。
用 s 三维数组存放太空的情况,然后用 flag 标记能否到达目的地,用 ans 作为答案累加器。从起点开始广度优先搜索,最先到达目的地的 ans 为最少移动次数。需要将走过的路标记为无法走的路避免重复遍历。
code
#include <bits/stdc++.h>
using namespace std;
int N;
char s[11][11][11]; // data set
string order; //输入的 START 和 END
int ans = 0; //记录答案
int flag = 0; //是否到达目的地
int A, B, C, D, E, F;
int dir[6][3] = { //六个方向
-1, 0, 0,
1, 0, 0,
0, -1, 0,
0, 1, 0,
0, 0, -1,
0, 0