티스토리 뷰

문제 출처 : https://www.acmicpc.net/problem/15684


#include <bits/stdc++.h>

using namespace std;


int N, M, H, l[35][15], ans=4;


bool chk() {

for (int i = 0; i < N - 1; i++) {

int ni = 0; int nj = i;

while (1) {

if (ni == H) {

if (nj == i) break;

else return false;

}

nj += l[ni][nj]; ni++;

}

}

return true;

}


void bt(int ni, int nj, int n){

if (chk()) {ans = min(ans, n); return;}

if (n == 3) return;

for (int i = ni; i < H; i++) {

for (int j = nj; j < N - 1; j++) {

if (l[i][j] == 0 && l[i][j + 1] != 1) {

l[i][j] = 1; l[i][j + 1] = -1;

if (j + 2 >= N) bt(i+1, 0, n + 1);

bt(i, j + 1, n + 1);

l[i][j] = 0; l[i][j + 1] = 0;

}

}

nj = 0;

}

}


int main() {

ios::sync_with_stdio(0); cin.tie(0); cin >> N >> M >> H; int a, b;

for (int i = 0; i < M; i++) {

cin >> a >> b; l[a-1][b-1] = 1; l[a-1][b] = -1;

}

bt(0, 0, 0);

cout << (ans>3?-1:ans);

return 0;

}


'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ 14502] 연구소  (0) 2018.07.15
[BOJ 9205] 맥주 마시면서 걸어가기  (0) 2018.07.15
[BOJ 2583] 영역 구하기  (0) 2018.07.14
[BOJ 2573] 빙산  (0) 2018.07.08
[BOJ 2638] 치즈  (0) 2018.07.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함