POJ 3669廣度優先搜尋

2021-08-02 09:35:52 字數 1331 閱讀 9834

這是一道典型的廣度優先搜尋bfs題目。

首先宣告一下,我在這裡借鑑了別人的想法:這是原文答案,

題目大意

流星雨即將攻擊地球,當然數目是有限的,共n個,攻擊到某個點時將會使該點及其上下左右四個點都被摧毀。乙個女的,不想被擊中啊,就跑啊。她要在地球上找到乙個地方讓她能夠度過災難。把整個地圖看作一張二維表,設該女孩在原點。其中輸入第一行為流星個數n。接下來n行,每行3個值,x,y,t。代表著(x,y)這一點將在t時間後接受流星的寵幸。。輸出為這個女的逃命的最短時間。如果注定將與流星為伴,那就輸出-1.。

我的理解:

地球看作是乙個二維表,每個點(x,y)上的值可以看作流星最早到來的時間。如果這人在流星到來之前就已走過則從此處逃命成功。直到其逃出流星雨寵幸的範圍,則逃命成功!

**:

#include #include #include #include #include #define max_n 512

using namespace std;

int map[max_n][max_n]; //用於儲存每個點最早被炸毀的時間

bool visited[max_n][max_n]; //深度優先搜尋時判定該點是否被訪問過

struct m; //定義乙個結構:代表著這點的座標位置以及流星最早落下的時間

//要移動的方向:上 下 左 右 自身

const int direction[5][2] = ,

, ,, ,

};m m[50008];

int n; //n個流星

int last; //最晚一顆流星落下的時間

int bfs()

//如果還沒有到達安全區,則只是證明這點目前是安全的,加入到佇列中去,看看該點周圍是否有永久安全區。。

que.push(current);

} } }

return -1;

}int main()

//將地圖中每個點流星最晚落下的時間設為127(隨便啦,滿足題意就行)。。

memset(map,0x7f,sizeof(map));

for(int i = 0;i= 0 && ny >= 0 && map[nx][ny] > m[i].t)

} }if(map[0][0] == 0){ //如果還沒開始逃命就被寵幸了,那就享受吧。。。

cout<<"-1"<

POJ 3669題目解答

poj 3669題目解答 bessie被流星雨襲擊,給出m顆流星,每個流星都有墜落的橫縱座標,以及墜落的時間。每個流星墜落後,該格仔連同上 下 左 右四個格仔都不能走了。bessie從 0,0 出發,每次只能向上 下 左 右移動一格,求達到安全位置的最小移動次數,不能則輸出 1。思路 地圖的大小沒有...

poj3669解題報告(詳細)

卡在2星期前,今天終於搞掂了。先說下題目大意吧。流星雨來襲擊我們的女主牛了,bessie。為了找乙個安全地方,她開始逃了。地圖相當於平面座標系第一象限,bessie一開始在原點。然後,每顆流星都會在某個時刻砸下來,砸到的地方連同上下左右都會被毀滅,此時這些地方bessie就不能通過了,她只能走其它地...

poj3669 流星雨啊

poj3669這道題我看了好像兩三天的樣子 迷之tle,迷之mle,迷之wa 後來發現,問題有點兒多.一共三個問題,一是讀入流星的時候,沒有考慮前面流星對後面流星的影響.二是 小主人公可以跑到300 300的格仔外面.三是 走路的時候,忘了判斷路是否已經走過 include include incl...