FZU 1082 最大黑區域 DFS

2021-07-25 02:34:04 字數 1425 閱讀 2769

最大黑區域

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

practice

fzu 1082

description

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

input

輸入由多個測試例組成。每個測試例的第一行含兩個整數n和m, (1 <=n,m<=100), 分別表示二值影象的行數與列數,後面緊跟著n行,每行含m個整數0或1,其中第i行表示影象的第i行的m個畫素,0表示白畫素,1表示黑畫素。同一行的相鄰兩個整數之間用乙個空格隔開,兩個測試例之間用乙個空行隔開,最後乙個測試例之後隔乙個空行,再接的一行含有兩個整數0,標誌輸入的結束。

output

每個測試例對應一行輸出,含乙個整數,表示相應的影象中最大黑區域的面積。

sample input

5 6

0 1 1 0 0 1

1 1 0 1 0 1

0 1 0 0 1 0

0 0 0 1 1 1

1 0 1 1 1 0

0 0

sample output

7
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define rep(i,j,k)for(i=j;ik;i--)

#define ms(x,y)memset(x,y,sizeof(x))

#define max(a,b) a>b?a:b

#define min(a,b) a=n||y<0||y>=m)return;

if(mp[x][y]==0)return;

if(flag[x][y])return;

k++;

flag[x][y]=1;

for(int i=0;i<4;i++)

return;

}int main()

}printf("%d\n",sum);

getchar();

}return 0;

}

FOJ Problem 1082 最大黑區域

題目大意 設計乙個程式尋找最大黑區域。黑區域由黑畫素組成,乙個黑區域中的每個畫素至少與該區域中的另乙個畫素相鄰,規定乙個畫素僅與其上 下 左 右的畫素相鄰。兩個不同的黑區域沒有相鄰的畫素。乙個黑區域的面積是其所包含的畫素的個數。解題思路 簡單的深度優先搜尋問題,由乙個黑色畫素點開始搜尋直到沒有黑色畫...

A 最大黑區域

problem 1082 最大黑區域 二值影象是由黑白兩種畫素組成的矩形點陣,影象識別的乙個操作是求出影象中最大黑區域的面積。請設計乙個程式完成二值影象的這個操作。黑區域由黑畫素組成,乙個黑區域中的每個畫素至少與該區域中的另乙個畫素相鄰,規定乙個畫素僅與其上 下 左 右的畫素相鄰。兩個不同的黑區域沒...

最大黑區域

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