题解
【提高】黑白无常
1 条题解
-
0
#include <stdio.h> #define BLACK 0 #define WHITE 1 int n; int x[10], y[10]; int slip[10]; int solve(int person_id) { if (person_id > 0) { slip[person_id] = BLACK; if (solve(person_id - 1)) return 1; slip[person_id] = WHITE; return solve(person_id - 1); } else { int n_black = 0, n_white = 0; for (int i = 1; i <= n; ++i) { if (slip[i] == BLACK) n_black++; else n_white++; } for (int i = 1; i <= n; ++i) { if (slip[i] == WHITE) { if (!(x[i] == n_white - 1 && y[i] == n_black)) return 0; } else { if (x[i] == n_white && y[i] == n_black - 1) return 0; } } return 1; } } int main() { scanf("%d", &n); for (int i = 1; i <= n; ++i) scanf("%d %d", &x[i], &y[i]); if (solve(n)) { int n_black = 0, n_white = 0; for (int i = 1; i <= n; ++i) { if (slip[i] == BLACK) n_black++; else n_white++; } if (n_black == n) printf("0"); else { for (int i = 1; i <= n; ++i) { if (slip[i] == WHITE) printf("%d", i); } } } else printf("NoSolution."); return 0; }
- 1