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

2021-10-05 22:35:22 字數 2170 閱讀 8680

一、題目描述

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

空間由立方體單位構成。

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

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

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

input

輸入第一行是乙個數表示空間的數量。

每個空間的描述的第一行為l,r和c(皆不超過30)。

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

隨後l層,每層r行,每行c個字元。

每個字元表示空間的乙個單元。』#『表示不可通過單元,』.『表示空白單元。

zjm的起始位置在』s』,出口為』e』。每層空間後都有乙個空行。

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

output

sample input

3 4 5

s…..

###.

.##..

###.#

#####

#####

##.##

##…#####

#####

#.###

####e

1 3 3

s###e#

###0 0 0

sample outpu

escaped in 11 minute(s).
二、思路概述

三、細節

使用了佇列queue,而且是多組輸入輸出,卻沒有考慮到佇列要清零。

三維空間,判斷座標是否越界,明明陣列是0-n-1(共n個數字),但是判斷條件卻寫的是》n才越界,這個應該是屬於,到底陣列從0開始儲存,還是從1開始的問題。

int dx=;

int dy=;

int dz=;

使用這樣的標記陣列,往各個方向探索,我寫的x=x+dx[i],應該是int xx=x+dx[i],不然的話,就是x這個點一直變化,非常詭異。

四、完整**

/*可使用bfs的方法,從起點開始向上下左右四個方向探索,

如果可走,就進去,直到碰壁,或者不能走,直到走到終點*/

//可通過的塊置0,不能的置1,起點置10,終點置100

#include

#include

//fill函式,sort函式,max函式

#include

//set函式,(去除重複)

#include

//不同型別轉換

#include

//memset函式

#include

using

namespace std;

struct point

point

(int xx,

int yy,

int zz,

int le)};

int l,r,c;

int kj[30]

[30][

30];//三維陣列,儲存迷宮

int vis[30]

[30][

30];//標記是否到達過

queue xp;

int dx=

;int dy=

;int dz=

;void

bfs(

int xx,

int yy,

int zz)}}

point p

(xx,yy,zz,0)

;vis[xx]

[yy]

[zz]=1

; xp.

push

(p);

while

(!xp.

empty()

)for

(int i=

0;i<

6;i++)}

} cout<<

<}int

main()

else

if(c==

'e')}}

}//cout<<111(x,y,z);}

}

Week12作業 必做題

a給出n個數,zjm想找出出現至少 n 1 2次的數,現在需要你幫忙找出這個數是多少?input 本題包含多組資料 每組資料報含兩行。第一行乙個數字n 1 n 999999 保證n為奇數。第二行為n個用空格隔開的整數。資料以eof結束。output 對於每一組資料,你需要輸出你找到的唯一的數。實現 ...

week12 動態規劃(三)B 必做題 2

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

WEEK12 作業 C 必做題3

東東每個學期都會去寢室接受掃樓的任務,並清點每個寢室的人數。每個寢室裡面有ai個人 1 i n 從第i到第j個宿舍一共有sum i,j a i a j 個人 這讓宿管阿姨非常開心,並且讓東東掃樓m次,每一次數第i到第j個宿舍sum i,j 問題是要找到sum i1,j1 sum im,jm 的最大值...