입력 코드
#include <stdio.h>
#define MAX 2187
#define TRUE 1
#define FALSE 0
int arr[MAX][MAX];
int count[3];
int checkbox(int x, int y, int w, int color)
{
for (int i = 0; i < w; i++)
for (int j = 0; j < w; j++)
if (arr[x + i][y + j] != color)
return FALSE;
return TRUE;
}
void splitbox(int x, int y, int w)
{
if (checkbox(x, y, w, arr[x][y]))
count[arr[x][y] + 1]++;
else
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
splitbox(x + i * w / 3, y + j * w / 3, w / 3);
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf("%d",&arr[i][j]);
splitbox(0, 0, n);
for (int i = 0; i < 3; i++)
printf("%d\n", count[i]);
return 0;
}
출처 www.acmicpc.net/source/25218156
코드 설명
#분할정복 #재귀
참고
chanhuiseok.github.io/posts/baek-13/
문제 출처
'C' 카테고리의 다른 글
#97. [백준_C언어] 1789 : 수들의 합 \ 이분 탐색 (0) | 2021.02.24 |
---|---|
#96. [백준_C언어] 2417 : 정수 제곱근 \ 이분 탐색 (0) | 2021.02.24 |
#94. [백준_C언어] 1992 : 쿼드트리 \ 분할 정복 (0) | 2021.02.23 |
#93. [백준_C언어] 1074 : Z \ 분할 정복 (0) | 2021.02.22 |
#92. [백준_C언어] 2447 : 별 찍기 - 10 \ 분할 정복 (0) | 2021.02.22 |