飛躍原野sdut1124

2021-08-13 06:58:13 字數 1479 閱讀 2005

題目描述

勇敢的法里奧出色的完成了任務之後,正在迅速地向自己的基地撤退。但由於後面有著一大群追兵,所以法里奧要盡快地返回基地,否則就會被敵人逮住。

終於,法里奧來到了最後的一站:泰拉希爾原野,穿過這裡就可以回到基地了。然而,敵人依然緊追不捨。不過,泰拉希爾的地理條件對法里奧十分有利,眾多的湖泊隨處分布。敵人需要繞道而行,但法里奧還是決定找一條能盡快回到基地的路。

假設泰拉希爾原野是乙個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 有疑問?點這裡 勇敢的法里奧出色的完畢了任務之後。正在迅速地向自己的基地撤退。但因為後面有著一大群追兵,所以法里奧要盡快地返回基地,否則就會被敵人逮住。最終。法里奧來到了最後的一站 泰拉希爾原野,穿過這裡就能夠回到基地了。然...