題目描述
勇敢的法里奧出色的完成了任務之後,正在迅速地向自己的基地撤退。但由於後面有著一大群追兵,所以法里奧要盡快地返回基地,否則就會被敵人逮住。
終於,法里奧來到了最後的一站:泰拉希爾原野,穿過這裡就可以回到基地了。然而,敵人依然緊追不捨。不過,泰拉希爾的地理條件對法里奧十分有利,眾多的湖泊隨處分布。敵人需要繞道而行,但法里奧還是決定找一條能盡快回到基地的路。
假設泰拉希爾原野是乙個m*n的矩陣,它有兩種地形,p表示平,l表示湖泊,法里奧只能停留在平地上。他目前的位置在左上角(1,1)處,而目的地為右下角的(m,n)。法里奧可以向前後左右4個方向移動或飛行,每移動1格需要1單位時間。而飛行的時間主要花費在變形上,飛行本身時間消耗很短,所以無論一次飛行多遠的距離,都只需要1單位時間。飛行的途中不能變向,並且一次飛行最終必須要降落到平地上。當然,由於受到能量的限制,法里奧不能無限制飛行,他總共最多可以飛行的距離為d。在知道了以上的資訊之後,請你幫助法里奧計算一下,他最快到達基地所需要的時間。
輸入 第一行是3個整數,m(1≤m≤100),n(1≤n≤100),d(1≤d≤100)。表示原野是m*n的矩陣,法里奧最多只能飛行距離為d。接下來的m行每行有n個字元,相互之間沒有空格。p表示當前位置是平地,l則表示湖泊。假定(1,1)和(m,n)一定是平地。
輸出 乙個整數,表示法里奧到達基地需要的最短時間。如果無法到達基地,則輸出impossible。
示例輸入
4 4 2
pllp
pplp
pppp
pllp
示例輸出
想法:老實說我是沒想到怎麼做,第一次想法是深搜,搜了半天寫不出來了,於是看了網上的想法,大部分都是用廣搜做的,還是三維廣搜,我一愣沒想出來廣搜是怎麼得出的最優解,看了**後才明白廣搜是通過佇列層次編列,直到找到終點,而這個路徑就是最優解,因為每找到乙個可行的點,都會push進佇列中(先進先出),於是就做到了層次遍歷。還有個地方是針對這個題,題目沒說平地不可以飛,所以這個傢伙是什麼地方都可以飛的,只要起點和終點都是平原。
#include
#include
#include
#include
#include
using namespace std
;char ma[101][101];//map
bool vis[101][101][101];//標識,分別標識橫縱和飛行距離
struct node ;
int n, m, d;
int dir[4][2] = ,,, };
void bfs()
for (int i = 0
; i < 4; i++)
for (int j = 2
; j <= v.d; j++) }}
}cout << "impossible";}
int main()
system("pause");
return 0
;}
sdutoj 1124 飛躍原野(BFS)
勇敢的法里奧出色的完成了任務之後,正在迅速地向自己的基地撤退。但由於後面有著一大群追兵,所以法里奧要盡快地返回基地,否則就會被敵人逮住。終於,法里奧來到了最後的一站 泰拉希爾原野,穿過這裡就可以回到基地了。然而,敵人依然緊追不捨。不過,泰拉希爾的地理條件對法里奧十分有利,眾多的湖泊隨處分布。敵人需要...
飛躍原野 開放科學在2023年飛躍發展
飛躍原野 2014年,我們在opensource.com上度過了一年的開放科學!我不希望涵蓋我們一年中發表的每篇文章,但是我將重點介紹一些我的最愛。潮流正在扭轉科學。更多的資金將用於開放科學專案,更多的出版物將其資料提供給所有人 尤其是其他研究人員 所有這些都有望開始影響招聘決策。今年,我們在ope...
SDUT 1124 飛躍荒野(三維BFS)
time limit 5000ms memory limit 65536k 有疑問?點這裡 勇敢的法里奧出色的完畢了任務之後。正在迅速地向自己的基地撤退。但因為後面有著一大群追兵,所以法里奧要盡快地返回基地,否則就會被敵人逮住。最終。法里奧來到了最後的一站 泰拉希爾原野,穿過這裡就能夠回到基地了。然...