hdu 1180 詭異的樓梯 搜尋

2021-07-24 10:33:20 字數 2663 閱讀 2634

description

hogwarts正式開學以後,harry發現在hogwarts裡,某些樓梯並不是靜止不動的,相反,他們每隔一分鐘就變動一次方向. 

比如下面的例子裡,一開始樓梯在豎直方向,一分鐘以後它移動到了水平方向,再過一分鐘它又回到了豎直方向.harry發現對他來說很難找到能使得他最快到達目的地的路線,這時ron(harry最好的朋友)告訴harry正好有乙個魔法道具可以幫助他尋找這樣的路線,而那個魔法道具上的咒語,正是由你纂寫的. 

input

測試資料有多組,每組的表述如下: 

第一行有兩個數,m和n,接下來是乙個m行n列的地圖,'*'表示障礙物,'.'表示走廊,'|'或者'-'表示乙個樓梯,並且標明了它在一開始時所處的位置:'|'表示的樓梯在最開始是豎直方向,'-'表示的樓梯在一開始是水平方向.地圖中還有乙個's'是起點,'t'是目標,0<=m,n<=20,地圖中不會出現兩個相連的梯子.harry每秒只能停留在'.'或's'和't'所標記的格仔內. 

output

只有一行,包含乙個數t,表示到達目標的最短時間. 

注意:harry只能每次走到相鄰的格仔而不能斜走,每移動一次恰好為一分鐘,並且harry登上樓梯並經過樓梯到達對面的整個過程只需要一分鐘,harry從來不在樓梯上停留.並且每次樓梯都恰好在harry移動完畢以後才改變方向. 

sample input

5 5

**..t

**.*.

..|..

.*.*.

s....

sample output

7

地圖如下:

這個題的難點就是梯子每隔一分鐘改變一次方向,需要判斷梯子每個時刻的方向,確定遇見梯子直接可以走嗎,題上說可以在任何非梯子的地方停留,這樣就可以在遇見梯子不能直接走的時候在原地等一分鐘

「登上樓梯並經過樓梯到達對面的整個過程只需要一分鐘」,如s.|t只需要兩分鐘,s到.一分鐘,梯子由|變為-,.到t一分鐘,所以可以當做梯子是不需要時間的

這個題比較水,有的資料是錯誤的就可以過,不過還是給辛苦的人一點資料吧,畢竟我也糾結了一天

5 5**..t

**.*.

**|..

**.**

s..**

5 5**..t

**.*.

**-..

**.**

s..**

5 5.|.-t

-*-*|

.*.|.

-*-**

s|.**

5 5s....

-|-|-

.....

-|-|-

....t

1 3s-t

1 3s|t

1 5s|.|t

1 5s-.-t

1 5s|.-t

1 5s-.|t

2 5*.-.t

.s.|.

1 2st

2 4-|.s

|t.-

1 5s.-.t

3 5.|*.t

.-.|.

s.-*.

3 4t...

*-*s

*.|.

4 3t**

.|..*-

.s.20 20

s.|.|.|.|.|.|.|.|.|.

.|.|.|.|.|.|.|.|.|.|

|.|.|.|.|.|.|.|.|.|.

.|.|.|.|.|.|.|.|.|.|

|.|.|.|.|.|.|.|.|.|.

.|.|.|.|.|.|.|.|.|.|

|.|.|.|.|.|.|.|.|.|.

.|.|.|.|.|.|.|.|.|.|

|.|.|.|.|.|.|.|.|.|.

.|.|.|.|.|.|.|.|.|.|

|.|.|.|.|.|.|.|.|.|.

.|.|.|.|.|.|.|.|.|.|

|.|.|.|.|.|.|.|.|.|.

.|.|.|.|.|.|.|.|.|.|

|.|.|.|.|.|.|.|.|.|.

.|.|.|.|.|.|.|.|.|.|

|.|.|.|.|.|.|.|.|.|.

.|.|.|.|.|.|.|.|.|.|

|.|.|.|.|.|.|.|.|.|.

.|.|.|.|.|.|.|.|.|.t87

7812

4332

3134

54420

#include#include#include#includeusing namespace std;

int t[4][2]= ;

int n,m;

int a1,b1,a2,b2;

char a[22][22];

int v[22][22];

struct p

};void bfs()

for(int i=0; i<4; i++)

{char c;

tmp.x=now.x+t[i][0];

tmp.y=now.y+t[i][1];

tmp.step=now.step+1;

if(tmp.x>=0&&tmp.x=0&&tmp.y=0&&tmp.x=0&&tmp.y=0&&tmp.x=0&&tmp.y

HDU 1180 詭異的樓梯

題意 題意應該很好理解,就是從s到t的最少步數,只是加了乙個樓梯。思路 一看就是廣搜,找最少的步數,harry只能每次走到相鄰的格仔而不能斜走,每移動一次恰好為一分鐘,並且harry登上樓梯並經過樓梯到達對面的整個過程只需要一分鐘,harry從來不在樓梯上停留.並且每次樓梯都恰好在harry移動完畢...

HDU 1180 詭異的樓梯

bfs問題。題意是說爬樓梯的時候,有些樓梯是 有些是 而且每隔一分鐘就互相變化形態。只能上下,只能左右。爬樓梯的過程中,會變的樓梯不能停留,其他的可以停留。爬樓梯需要乙個單位時間,假如是 表明乙個單位時間從它左邊到它右邊或者 右邊到左邊。樓梯停留多次沒有意義,特殊樓梯只有2種旋轉狀態,多乙個wait...

hdu 1180 詭異的樓梯

要注意,雖然樓梯有時不能過,但是我們可以在樓梯前等一下,等到樓梯達到我們需要的狀態時再過,其實不用優先佇列也是可以的.具體自己去想吧.好久沒寫這麼長的 了 include include includeint m,n int tx,ty,sx,sy int visit 21 21 int dir 4...