一、題目描述
zjm被困在乙個三維的空間中,現在要尋找最短路徑逃生!input空間由立方體單位構成。
zjm每次向上下前後左右移動乙個單位需要一分鐘,且zjm不能對角線移動。
空間的四周封閉。zjm的目標是走到空間的出口。
是否存在逃出生天的可能性?如果存在,則需要多少時間?
輸入第一行是乙個數表示空間的數量。output每個空間的描述的第一行為l,r和c(皆不超過30)。
l表示空間的高度,r和c分別表示每層空間的行與列的大小。
隨後l層,每層r行,每行c個字元。
每個字元表示空間的乙個單元。』#『表示不可通過單元,』.『表示空白單元。
zjm的起始位置在』s』,出口為』e』。每層空間後都有乙個空行。
l,r和c均為0時輸入結束。
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 的最大值...