2019 GDUT 新生專題 I B,C

2021-10-02 03:56:30 字數 1163 閱讀 7057

給出n*m的乙個地圖,』 . 『代表著沒有水的陸地,』 w '代表著水窪,所以相鄰的水窪,包括對角相鄰,形成乙個池塘,要求的就是池塘的數目。

通過深度優先搜尋,對每乙個水窪進行遍歷,被遍歷過的水窪被標記為陸地,防止被再次遍歷或者進入死迴圈,每次退出了迴圈則池塘數目加一,直到地圖上沒有水窪。

#include

#include

#include

using

namespace std;

char map[

105]

[105];

//對應相鄰的八個方位

int neighbor[8]

[2]=

,,,,

,,,}

;int n, m;

void

dfs(

int x,

int y)}}

intmain()

getchar()

;}//對每個水窪進行遍歷

for(i=

0; i} cout << ans << endl;

}

給出w*h的地圖,』 . 『代表著黑瓷磚,』 # 『代表著紅瓷磚,』 @ '代表著人的位置,人的腳下也是黑瓷磚。要求的就是人所能走的最多的黑瓷磚的數目。

通過深度優先搜尋,從人的位置開始對相鄰的黑瓷磚進行遍歷,被遍歷過的黑瓷磚被標記為紅瓷磚,防止被再次遍歷或者進入死迴圈,同時黑瓷磚的數目加一。做法和上面的基本相同。

#include

#include

using

namespace std;

int w, h;

int ans =0;

char _map[21]

[21];

//對應四個方向

int dir[4]

[2]=

,,,}

;void

dfs(

int x,

int y)}}

intmain()

}}dfs(ai,aj)

; cout << ans << endl;

cin >> w >> h;

}return0;

}

最後,希望路過的dl們能給予改進的建議!

2019 GDUT 新生專題 I A

給定n個數字,計算出最短的連續子串行,使這個子串行的全部數字之和大於或等於給定數字s。如果不存在可以滿足題意的子串行則輸出0。這是經典的,相對比較容易的尺取問題,通過遍歷每乙個連續子串行即可得出答案。但是,由於時間的限制,要注意一些已經沒有意義的連續子串行和被重複計算的過程。include incl...

2019 GDUT 新生專題 I D,F

給出n個石頭及其每個石頭的價值和重量,選取k個石頭,重量之和不大於給定的w,來做成項鍊,要求構成項鍊的石頭的價值之和最大,輸出這個最大值。include include using namespace std int n,k,want w want w 項鍊不超過的重量 int num 已選的石頭數...

2019 GDUT 新生專題 I G

給出n m乙個地圖,一共最少有2個格,最多有200000格。有起點,終點,怪獸及其攻擊的範圍,輸出從起點到終點的最短距離,如果無法到達終點,則輸出 1 難點 無法直接建立二維陣列儲存地圖 陣列空間太大 需要用一維間接變成二維或者自行開闢空間 對怪獸攻擊範圍的處理 起點或終點在攻擊範圍內。解決 用一維...