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 ...