-
백준 - 색종이 붙이기 [17136]공부/baekjoon 문제 2019. 6. 19. 14:48
* 해당 코드의 결과는 "틀렸습니다" 입니다. 아직 해결하지 못한코드이니 참고만 해주시길 바랍니다.
#include <iostream> #include <algorithm> #include <vector> using namespace std; int map[10][10]; int v[10][10]; int result = 0; int mat[6] = { 5,5,5,5,5,5 }; vector<int> t; void checking(int x, int y, int size) { int i = x; int j = y; bool check = false; if (x + size - 1 > 9) return; if (y + size - 1 > 9) return; for (int k = 0; k < size; k++) { for (int l = 0; l < size; l++) { if (map[i + k][j + l] == 0 || v[i + k][j + l]) { check = true; } } } if (!check && mat[size] > 0) { for (int k = 0; k < size; k++) { for (int l = 0; l < size; l++) { v[i + k][j + l] = true; } } mat[size]--; result++; } } void ff(vector<int> real, int n) { for (int size = 0; size < n; size++) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (map[i][j] == 1 && !v[i][j]) { checking(i, j, real[size]); } } } } } int main() { bool check = false; vector<int> r; int size = 5; t.push_back(5); t.push_back(4); t.push_back(3); t.push_back(2); t.push_back(1); for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) cin >> map[i][j]; } for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { v[i][j] = false; } } while (size > 1) { vector<int> ind; for (int i = 0; i < 5 - size; i++) ind.push_back(0); for (int i = 0; i < size; i++) ind.push_back(1); do { vector<int> real; for (int i = 0; i < 5; i++) if (ind[i] == 1) real.push_back(t[i]); ff(real, size); for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (!v[i][j] && map[i][j] == 1) check = true; } } if (check) r.push_back(100); else r.push_back(result); check = false; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { v[i][j] = false; } } result = 0; for (int i = 1; i < 6; i++) mat[i] = 5; } while (next_permutation(ind.begin(), ind.end())); size--; } sort(r.begin(), r.end()); if (r.front() == 100) cout << -1; else cout << r.front(); return 0; }
'공부 > baekjoon 문제' 카테고리의 다른 글
백준 문제 풀다보면 느끼는거 (0) 2019.06.23 백준 - 빗물 [14719] (0) 2019.06.21 백준 - 전광판의 숫자 [16159] (0) 2019.06.19 백준 - 연구소 3 [17142] (0) 2019.06.13 백준 - 캐슬 디펜스 [17135] (0) 2019.06.13