소풍(PICNIC) 정답 코드
뿌리튼튼 CS/Algorithm2015. 2. 9. 14:22
난이도 ★★★★☆
이하는 코드입니다.
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include <stdio.h> #include <string.h> #pragma warning(disable:4996) int n, m; int edges[11][11]; int checkBoard[11]; int count; void getPossibleCount() { /* pick p1 */ int p1 = -1; for (int i = 0; i < n; i++) { if (checkBoard[i] == -1) { p1 = i; checkBoard[p1]++; break; } } // Finally, possible case was just found. count++ if (p1 == -1) { count++; return; } /* pick p2 */ for (int i = 0; i < n; i++) { if ((edges[p1][i] == 1) && (checkBoard[i] == -1)) { checkBoard[i]++; getPossibleCount(); checkBoard[i]--; } } checkBoard[p1]--; } int main() { int C; scanf("%d", &C); for (int i = 0; i < C; i++) { scanf("%d %d", &n, &m); // get edges memset(edges, -1, sizeof(edges)); for (int j = 0; j < m; j++) { int p1, p2; scanf("%d %d", &p1, &p2); edges[p1][p2] = edges[p2][p1] = 1; } // memset(checkBoard, -1, sizeof(checkBoard)); count = 0; getPossibleCount(); printf("%d\n", count); } return 0; } | cs |
'뿌리튼튼 CS > Algorithm' 카테고리의 다른 글
Microwaving Lunch Boxes(LUNCHBOX) 정답 코드 (0) | 2015.02.12 |
---|---|
회전초밥(SUSHI) 정답 코드 (0) | 2015.02.10 |
0-1수열(ZEROONE) 정답 코드 (0) | 2015.02.09 |
사각형 그리기(DRAWRECT) 정답 코드 (0) | 2015.02.08 |
최대 연속 부분합 찾기(MAXSUM) 입력 출력 및 정답 코드 (0) | 2015.02.05 |