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

2021-10-06 02:36:24 字數 1629 閱讀 3620

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

input

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

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

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

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

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

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

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

outputsample input

3 4 5

s…..###.

.##..

###.#

#####

#####

##.##

##…#####

#####

#.###

####e

1 3 3

s###e#

###0 0 0

sample output題目解析

這道題首先要理解題意,它其實就是乙個走迷宮的問題,可以採用dfs和bfs的做法。

當人處於某一層時,他只能向左,向右,向上,向下走,

#相當於牆,那麼從起點開始,

通過bfs遍歷看此人能否到達終點,需要明確的是當人處在當前層位置時,他可以跳到下一層任意一行。

但是跳到下一層所處的位置列數必須相同,就比如上面例子

s向右走

4步,向下走

2步,向左走

1步,向下走

1步,現在s處於第一層的第四行第四列。

然後s直接跳到了第二層的第四行第四列,

1,s向右走

1步,然後s直接跳到第三層終點1。

於是s最少走的路為:4+

2+1+

1+1+

1+1=

11

codes

#include

#include

using

namespace std;

char g[35]

[35][

35];int vis[35]

[35][

35],dis[6]

[3]=

,,,,

,};int l,r,c;

struct graph

; graph gh;

queue q;

void

bfs(

)for

(int i=

0;i<

6;i++)}

} cout<<

<}int

main()

}}}bfs()

;}return0;

}

Week12 必做題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 的最大值...

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 的最大值...

Week12作業 必做題

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