HDU1728逃離迷宮(BFS 優先佇列)

2021-08-15 22:38:14 字數 795 閱讀 9705

解題思路:對優先佇列有了更深的理解。以前寫優先佇列是針對那種有權的最短路問題,搜出來的必定是道路的花費最優解,我們可以用book標記走過的地方,下次不必要再走;而本題由於用了優先佇列,走過的點到底要不要再考慮呢?假設上次到達本點拐彎了1次,而現在卻拐彎了2次,當然不要本次的這個方法走,相反如果本次用1次,而上次用2次,就要用本次的方法。如果兩次的拐彎數一致呢?其實兩種都要搜,為什麼?因為你進來的方向一定是不同的,而之後你這個方向直直下去如果有終點,你的最小拐彎就是到達本點這麼多了,而另外一種方向還要再拐彎一次!

ac**如下:

#include#include#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f

using namespace std;

struct node

};char image[110][110];

int n,m,tx,ty,k,nex[4][2]=,book[110][110];

priority_queueq;

bool judge(int x,int y)

bool bfs(int x,int y)

while(!q.empty())

cin>>k>>y>>x>>ty>>tx;

if(bfs(x,y))

cout<<"yes"《測試資料:

15 5

*....

..*..

.*..*

*....

*....

2 3 5 5 2

HDU1728 逃離迷宮 BFS

problem description 給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能...

hdu1728 逃離迷宮 bfs

解題思路 乙個方向搜到底,那麼每次搜過的點肯定都是用轉彎次數最少的路徑走到的 hdu1728 2014 07 10 20 03 49 accepted 1728 46ms 372k 2360 b g bfs 乙個方向搜到底,那麼每次搜過的點肯定都是用轉彎次數最少的路徑走到的 include incl...

HDU 1728 逃離迷宮 BFS

題目傳送門 典型的廣搜題,但是有坑,在某個方向走的時候要一直走到頭,不然的話可能會出現多轉彎的情況,主要就是保證從起始點到某一點的轉彎次數是最小的 ac include include include include include include include include include i...