백준
백준 소스코드 [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;
}