728x90
분할정복법(Divide and Conquer) 을 사용해 푸는 문제
- c++
#include <iostream>
#define MAX 128
using namespace std;
int adj[MAX][MAX];
int answer[2] = {
0,
};
int N;
void divide_and_conquer(int x, int y, int size) {
for (int i = x; i < x + size; i++) {
for (int j = y; j < y + size; j++) {
if (adj[x][y] != adj[i][j]) {
int s = size / 2;
divide_and_conquer(x, y, s);
divide_and_conquer(x + s, y, s);
divide_and_conquer(x, y + s, s);
divide_and_conquer(x + s, y + s, s);
return;
}
}
}
answer[adj[x][y]]++;
}
int main() {
cin.tie(0);
ios_base::sync_with_stdio(0);
cin >> N;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cin >> adj[i][j];
}
}
divide_and_conquer(0, 0, N);
cout << answer[0] << '\n';
cout << answer[1] << '\n';
return 0;
}
|
cs |
코드 원 출처 : blog.naver.com/PostView.nhn?blogId=jqkt15&logNo=221943964277
728x90
'PS' 카테고리의 다른 글
BOJ 11585 - 속타는 저녁 메뉴 (0) | 2020.09.14 |
---|---|
BOJ 7569 - 토마토 (0) | 2020.09.06 |
BOJ 11724 - 연결 요소의 갯수 (0) | 2020.09.04 |
BOJ 1931 - 회의실 배정 (0) | 2020.08.31 |
BOJ 11399 - ATM (0) | 2020.08.30 |