DFS, BFS 문제입니다.
그림이 몇개인지 가장 넓이가 큰 그림의 넓이가 몇인지 구하여야 합니다.
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int map[502][502];
int check[502][502];
int maxCount = 0;
int printCount = 0;
int dfs(int i, int j){
int count = 0;
if(map[i][j] == 0){
return 0;
} else if(map[i][j] == 1 && !check[i][j]) {
count = 1;
check[i][j] = true;
count += dfs(i+1, j);
count += dfs(i, j+1);
count += dfs(i-1, j);
count += dfs(i, j-1);
}
maxCount = max(maxCount, count);
return count;
}
int main(int argc, char *argv[])
{
int n, m;
int num;
cin >> n >> m;
memset(map, 0, sizeof(map));
memset(check, false, sizeof(check));
for(int i=1; i<=n; ++i){
for(int j=1;j<=m; ++j){
cin >> num;
map[i][j] = num;
}
}
for(int i=1; i<=n; ++i){
for(int j=1;j<=m; ++j){
if(dfs(i, j) != 0){
++printCount;
}
}
}
cout << printCount << endl;
cout << maxCount << endl;
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 2533번 사회망 서비스(SNS) (0) | 2021.08.25 |
---|---|
[C++] 백준 14226번 이모티콘 (0) | 2021.08.24 |
[C++] 백준 1715번 카드 정렬하기 (0) | 2021.08.09 |
[C++] 백준 1339번 단어 수학 (0) | 2021.08.09 |
[C++] 백준 1744번 수 묶기 (0) | 2021.08.04 |