BFS最強 猴群題解

2021-09-25 15:06:54 字數 957 閱讀 8174

4、猴群。(monkey,1s,64mb)

【問題描述】

如圖9,9-2所示的數字矩陣是由0到9組成,其中數字0代表樹,1~9代表猴子,凡是由0或矩形邊圍起來的區域表示有一群猴子在這一帶,給出乙個數字矩陣,求其中有多少群猴子。

【輸入格式】

第1行為矩形的行數m、列數n

下面m行為乙個m*n數字矩陣

【輸出格式】

一行乙個數,表示猴群的數目。

【輸入樣例】

4 10

0234500067

1034560500

2045600671

0000000089

【輸出樣例】

4【資料範圍】

對與100%的資料滿足:n,m≤100

通過讀題,我們發現,這道題主要是一道非常簡單的bfs,它要我們求出圖中的聯通塊的數量,題目裡除了0以外都是猴子,猴子們被樹分開。圖里的猴子初始假設都為自由猴子。我們只要找一遍圖,一但看見乙隻自由猴子就先當做猴王,建立了乙個猴群,猴王會把周圍的自由猴子說動並拉入猴群裡,這個猴群裡的猴子會把周圍的自由猴子說動並拉進猴群裡,直到不能拉為止,被拉進來的猴子(包括猴王)就不是自由猴子了,以此類推,就可以得出猴群的數量。

#includeusing namespace std;

int dx[5]=;

int dy[5]=;

bool f[110][110];

struct num

a[10010];

int m,n,ans;

char c;

void bfs(int xx, int yy)

}h++;

}}int main()

}for(int i=1;i<=n;i++)

for(int j=1;j<=m;j++)

if(f[i][j]==1)

cout

猴群選猴王(約瑟夫問題)詳解

約瑟夫問題的題目和描述就不說了,題目鏈結有很多,我直接瞎選了乙個,自己看看就可以 點這裡,原版題目,自己試試看 洛谷的題 首先說思路,每一輪都會有1個人退出,在這裡我們會關心誰退出了,誰留下來。第一輪 第m n個人退出 第二輪 第2m n個人退出 第n 1輪 第 nm m n個人退出 此時還剩下乙個...

笨小猴pascal題解

題意 找出在單詞裡出現最多的單詞的次數,再找出在單詞裡出現最少的單詞的次數,最多和最少的次數相減,如果結果是素數,那麼就是lucky word,不然就是no answer 分析 假設maxn是單詞中出現次數最多的字母的出現次數,minn是單詞中出現次數最少的字母的出現次數,如果maxn minn是乙...

八數碼題解(bfs

八數碼分析 本題是求最少交換次數,故先想到bfs,而本題的難點在於狀態和步數的儲存。以及狀態的轉移。如何記錄下x和乙個數交換後的狀態?如何記錄步數?主要思想 乙個巧妙的思想可以解決此類問題,狀態可以用string型別來記錄,求在3 3矩陣中的橫縱座標無非就是將其在string型別中的位序 假設為k ...