問題簡述:
有一塊油田,*代表無油區,@代表油田,若油田的八個鄰格內也有一塊油田,則稱兩塊油田是一塊連通的油區,視作一片油區。求油區的個數。
問題分析:
連通問題,可用dfs搜尋,每次dfs過去將@置為*,遍歷整幅圖,dfs的次數即為油區的個數
#include#include#include#include#include#include#include#includeusing namespace std;
char map[105][105];
int dir[8][2]=;
int n,m;
bool edge(int x,int y)
for(int i=0;i>map[i][j];
}} int ans=0;
for(int i=0;i}
} cout<}}
第五次訓練 G題
問題簡述 森林中j可向四個方向移動,同時火源向四個方向擴散,當j逃到地圖外則視作成功逃離,問j能否逃離森林,若能,輸出最短時間。問題分析 由最短路徑可知,需要用到bfs。除了人外,森林中還有火源會隨著人移動不斷向四處擴散,則只需用兩次bfs即可。第乙個bfs模擬火源的移動,將火源擴散到每個方格時的最...
第七次訓練 G題
問題簡述 給出一幅地圖,已知狗的起點s,終點門d的座標,門只在時間t開啟,而狗每次移動後,以前踏過的地板便會下沉消失 即不能走重複的路 問狗能否在指定的時間t到達門。問題分析 此題並非求最短路徑,因此用bfs並不合適,因bfs同時向多條路徑併發,容易影響到其他路徑的方向導致答案錯誤,若不標記路徑,又...
第十次訓練 G題
問題簡述 小明在舉辦生日宴會,但不知道要安排多少張桌子,小明打算將認識的人放在同一桌,同時認識具有傳遞性,即a認識b,b認識c,可當做a認識c。請你編寫乙個程式幫小明求求他需要準備多少張桌子?問題分析 赤裸裸的並查集了,假定初始狀態為每個人都需要一張桌子,進行一次合併就減一張桌子即可。include...