3035 次大黑區域

2021-10-23 05:43:19 字數 1840 閱讀 4937

單點時限: 2.0 sec

記憶體限制: 256 mb

二值影象是由黑白兩種畫素組成的矩形點陣,影象識別的乙個操作是求出影象中次大 (第二大) 黑區域的面積。請設計乙個程式完成二值影象的這個操作。黑區域由若干黑畫素組成,乙個黑區域中的每個黑畫素至少與該區域中的另乙個黑畫素相鄰,規定乙個畫素僅與其上、下、左、右的畫素相鄰。兩個不同的黑區域沒有相鄰的畫素。乙個黑區域的面積是其所包含的黑畫素的個數。

輸入格式

第1 行:乙個整數 t (1≤t≤10) 為問題數。

接下來共 t 組測試資料,每組測試資料的第一行含兩個整數 n,m (1≤n,m≤100),分別表示二值影象的行數與列數,後面緊跟著 n 行,每行含 m 個整數 0 或 1,其中第 i 行表示影象的第 i 行的 m 個畫素,0 表示白畫素,1 表示黑畫素。同一行的相鄰兩個整數之間用乙個空格隔開。

輸出格式

對於每個問題,輸出一行問題的編號(0 開始編號,格式:case #0: 等)。

然後對應每組測試資料,在一行中輸出乙個整數,表示相應的影象中次大(第二大)黑區域的面積。如果第二大面積的黑區域不存在時,則輸出 0。

樣例input

32 3

1 1 0

0 1 1

4 50 1 1 0 1

0 0 0 1 0

0 1 1 1 0

0 1 0 0 0

5 61 1 0 0 1 1

1 1 0 1 1 0

0 0 1 0 0 1

1 1 0 1 0 1

0 1 0 1 1 0

output

case #0:

0case #1:

2case #2:3提示

第一組測試資料:

1 1 0

0 1 1

在影象中只能找到 1 個黑區域,面積為 4,因此次大(第二大)黑區域的面積為 0。

第三組測試資料:

1 1 0 0 1 1

1 1 0 1 1 0

0 0 1 0 0 1

1 1 0 1 0 1

0 1 0 1 1 0

在影象中能找到 6 個黑區域,它們的面積分別為 4,4,3,3,2,1,次大(第二大)黑區域的面積為 3。

/*

思路:bfs求連通分量

*/#include

#include

#include

#include

#define p pair

using

namespace std;

int n,m;

bool visit[

100]

[100]=

;int x[4]

=;int y[4]

=;int d[

100]

[100];

bool

text

(int a,

int b)

intbfs

(int a,

int b)}}

return ans;

}int

main()

memset

(visit,0,

sizeof

(visit));

set<

int>s;

for(

int i =

0; i < n; i++)}

}printf

("case #%d:\n"

,z);

if(s.

size()

<2)

cout<<

0

}return0;

}

第七次 大遞迴練習

1.遞迴和非遞迴分別實現求第n個斐波那契數。int fibernaqi int n else if n 1 n 2 else return c int main int fib int n int main 2.編寫乙個函式實現n k,使用遞迴實現 int mul int k,int n retur...

京東劉強東的3次大抉擇

6月12日,京東集團董事局主席兼首席執行官劉強東應邀在牛津大學賽德商學院發表演講。劉強東在演講中分享了自己大學時期的一些學習和創業經歷,以及京東在幾個重要的關鍵節點是如何做出抉擇的 感興趣的同學可以搜尋檢視演講實錄,乾貨很多!一 自強不息的學習生涯 劉強東 我1992年考上中國人民大學,當時從宿遷,...

洛谷P5682 次大值 題解

alice 有 n 個正整數,數字從 1 sim n 編號,分別為 a 1,a 2,cdots a n bob 剛學習取模運算,於是便拿這 n 個數進行練習,他寫下了所有 a i mod a j 1 le i,j le n wedge i neq j 的值,其中 mod 表示取模運算。alice 想...