티스토리 뷰

백준

백준 소스코드 [C++] 1992 쿼드트리

Hani_Levenshtein 2020. 8. 17. 07:35

https://www.acmicpc.net/problem/1992

 

1992번: 쿼드트리

첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1≤N ≤64의 범위를 가진다. 두 번째 줄부터는 길이 N 의 문자열이 N 개 들어온다. 각 문자열은 0 또는

www.acmicpc.net

백준 소스코드 [C++] 1992 쿼드트리

#include <iostream>
#include <algorithm>
using namespace std;
void quad(int** arr, int x, int y, int n) {
	bool zero_one = true;
	for (int i = x ;i < x+n ;i++)
		for (int j = y ;j < y+n;j++)
			if (arr[i][j] != arr[x][y]) zero_one = false;
	if (zero_one == false) {
		cout << '(';
		for (int a = 0;a <= 1;a++)
			for (int b = 0;b <= 1;b++)
				quad(arr, x + a * n / 2, y + b * n / 2, n / 2);
		cout << ')';
	}
	else cout << arr[x][y];
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int n;
	cin >> n;
	char x;
	int** arr = new int* [n+1];
	for (int j = 1;j <= n;j++) {
		arr[j] = new int[n+1];
		for (int i = 1;i <= n;i++) {
			cin >> x;
			arr[j][i] = x - '0';
		}
	}
	quad(arr,1,1, n);
	return 0;
}
댓글