풀이
DFS를
멋있게
폼나게
오지게
간지나게
돌려보자.
코드
#include <stdio.h>
#include <string.h>
const int dx[] = { 0,0,1,-1 };
const int dy[] = { 1,-1,0,0 };
int n, w, cnt, ans, mx, a[102][102], b[102][102];
inline int max(int a, int b) { return a > b ? a : b; }
void dfs(int x, int y) {
b[x][y] = 0;
for (int i = 0; i < 4; i++) {
int nx = x + dx[i], ny = y + dy[i];
if (b[nx][ny] > w) dfs(nx, ny);
}
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
scanf("%d", &a[i][j]);
for (int k = 0; k <= 100; k++) {
memcpy(b, a, sizeof(a));
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (b[i][j] > k) {
w = k, cnt++;
dfs(i, j);
}
}
}
ans = max(cnt, ans);
cnt = 0;
}
printf("%d", ans);
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이