Week 12 B 三維空間

2021-10-05 23:49:57 字數 1732 閱讀 6687

zjm被困在乙個三維的空間中,現在要尋找最短路徑逃生!

空間由立方體單位構成。

zjm每次向上下前後左右移動乙個單位需要一分鐘,且zjm不能對角線移動。

空間的四周封閉。zjm的目標是走到空間的出口。

是否存在逃出生天的可能性?如果存在,則需要多少時間?

input

輸入第一行是乙個數表示空間的數量。 每個空間的描述的第一行為l,r和c(皆不超過30)。

l表示空間的高度,r和c分別表示每層空間的行與列的大小。 隨後l層,每層r行,每行c個字元。

每個字元表示空間的乙個單元。』#『表示不可通過單元,』.『表示空白單元。 zjm的起始位置在』s』,出口為』e』。每層空間後都有乙個空行。

l,r和c均為0時輸入結束。

output

每個空間對應一行輸出。 如果可以逃生,則輸出如下 escaped in x minute(s). x為最短脫離時間。

sample input

345

s…..###.

.##.

.###.#

#####

#####

##.##

##…#####

#####

#.###

####e13

3s##

#e####00

0

sample outpu

escaped in 11

minute

(s).

可以看出這是個bfs遍歷問題,唯一不一樣的就是用的是三維陣列。但是影響不大,只是方向變成了三維的。

用乙個陣列存放方向:

int dir[6]

[3]=

;

在bfs的時候,每次從佇列中彈出乙個座標,六個方向全都遍歷一遍,計算出下乙個位置的座標,將符合要求的座標入隊。迴圈知道隊列為空,或者走到了終點。

#include

#include

#include

using

namespace std;

struct pos

;int dir[6]

[3]=

;int l,r,c;

int a[32]

[32][

32];bool vis[32]

[32][

32];string start;

pos st;

int suc;

void

bfs(pos st)

for(

int i=

0; i<

6; i++

) vis[next.x]

[next.y]

[next.z]

=true;}

}}intmain()

else}}

}bfs

(st);if

(suc!=-1

) cout<<

"escaped in "

<" minute(s)."

>l>>r>>c;

}}

Week12 作業 B 必做題(三維空間迷宮)

一 題目描述 zjm被困在乙個三維的空間中,現在要尋找最短路徑逃生!空間由立方體單位構成。zjm每次向上下前後左右移動乙個單位需要一分鐘,且zjm不能對角線移動。空間的四周封閉。zjm的目標是走到空間的出口。是否存在逃出生天的可能性?如果存在,則需要多少時間?input 輸入第一行是乙個數表示空間的...

三維空間剛體旋轉

剛體 運動過程中不會產生形變的物體,運動過程中同乙個向量的長度和夾角都不會發生變化。剛體變換也稱為歐式變換。旋轉矩陣 四元數旋轉向量 尤拉角安裝方式 eigen庫只有標頭檔案,沒有.so和.a二進位制檔案,所以在cmakelists.txt中只需要新增標頭檔案路徑,並不需要使用target link...

BFS 三維空間迷宮

題面 你被困在乙個三維的空間中,現在要尋找最短路徑逃生!空間由立方體單位構成。每次向上下前後左右移動乙個單位需要一分鐘,且不能對角線移動。空間的四周封閉。你的目標是走到空間的出口。問是否存在逃出生天的可能性?如果存在,則需要多少時間?輸入第一行是乙個數表示空間的數量。每個空間的描述的第一行為l,r和...