詭異的樓梯

2021-10-03 04:51:38 字數 1726 閱讀 6036

problem 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[hint]hint[/hint]

地圖如下:

[img]/data/images/c6-1003.gif[/img]

source

gardon-dygg contest 1

``一開始以為只有單個樓梯wa了兩次,後來改回來的時候,當樓梯不能走的時候應該壓入還沒走之前的位置。我壓了走之後的位置又錯了兩發…

#include

using

namespace std;

int n,m,sx,sy,ex,ey;

char mp[25]

[25];

int vis[25]

[25];

int dir[4]

[2]=

;//上左下右

struct s

;bool

check

(int x,

int y)

return

false;}

void

bfs(

)for

(int i=

0;i<

4;i++

)else

if(next.pre==

1||next.pre==3)

//左和右

}else

if(mp[next.x]

[next.y]

=='|'

&&cur.step%2!=

0)}else

}else

if(next.pre==

0||next.pre==2)

}else

if(mp[next.x]

[next.y]

=='-'

&&cur.step%2!=

0)}else}}

}}}int

main()

}}bfs();

}return0;

}//上是0 左是1 下是2 右是3

詭異的樓梯

problem description hogwarts正式開學以後,harry發現在hogwarts裡,某些樓梯並不是靜止不動的,相反,他們每隔一分鐘就變動一次方向.比如下面的例子裡,一開始樓梯在豎直方向,一分鐘以後它移動到了水平方向,再過一分鐘它又回到了豎直方向.harry發現對他來說很難找到能...

詭異的樓梯 bfs

題目描述 點選進入 思路 這裡的難點主要是搜尋過程中遇到 或者 的處理。我的處理是,遇見了,就直接越過去,直接存它的下乙個點 當然了,還得判斷下乙個點是否越界以及走過或者是牆壁 如果當時樓梯方向正好和你搜尋的方向相同,那步數 1 如果不同,那麼等一秒再過去,就是步數 2 關於樓梯方向和搜尋的方向是否...

HDU 1180 詭異的樓梯

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