詭異的樓梯 bfs

2022-06-18 14:12:15 字數 945 閱讀 3794

題目描述:點選進入 思路

這裡的難點主要是搜尋過程中遇到 「 | 」 或者 「 - 」 的處理。

我的處理是,遇見了,就直接越過去,直接存它的下乙個點(當然了,還得判斷下乙個點是否越界以及走過或者是牆壁);

如果當時樓梯方向正好和你搜尋的方向相同,那步數+1;

如果不同,那麼等一秒再過去,就是步數+2;

關於樓梯方向和搜尋的方向是否相同的判斷,還是看**吧~~~~~

**

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int d[4]

[2]=

;char mp[

110]

[110];

bool vis[

110]

[110];

int n,m,cnt;

struct node

tmp;

intbfs

(int x,

int y)

else

}else

if(mp[xx]

[yy]

=='-'

)else

}else

vis[xx]

[yy]=1

; tmp.x=xx;

tmp.y=yy;

q.push

(tmp);}

}return-1

;}intmain()

for(

int i=

1;i<=n;i++)}

}printf

("%d\n"

,ans);}

return0;

}

hdu 1180 詭異的樓梯(bfs)

小記 阿西吧!我就因為乙個dir方向搞錯了,寫的是從左往右是上下左右,用的時候是按上左下右。思路 bfs,首先我們假設沒有樓梯的情況,那麼問題就簡單很多了,bfs隨手可以打出來。打完後再繼續 我們現在要新增可變的樓梯上去。樓梯有個初始狀態,然後有個到達樓梯旁邊時的樓梯的狀態,而這個狀態時和你到達樓梯...

hdu1180詭異的樓梯(bfs)

這道題的意思是哈利波特要從s走到t,中間有那種會改變方向的樓梯,經過樓梯的話一共只用一秒,但是可能會存在有特殊的樓梯會一秒改變一次方向,也就是說可能會等一秒,不會有兩個樓梯連續挨著,還有很重要的一點就是,你不能再樓梯上呆一秒,所以當你找到樓梯的時候,不能把他直接壓進佇列,要直接對它進行處理,然後把處...

G 詭異的樓梯 (優先佇列 BFS)

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