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
|
bool H[10][10], V[10][10]; inline bool (int r, int c, int size) { for (int i = c; i < c + size; i++) if (!H[r][i] || !H[r + size][i]) return false; for (int i = r; i < r + size; i++) if (!V[c][i] || !V[c+size][i]) return false; return true; } int main() { int n, Case = 1; while (scanf("%d", &n) != EOF) { int i, j; for (i = 0; i <= n; i++) for (j = 0; j <= n; j++) V[i][j] = H[i][j] = false;
int m, a, b; char c; scanf("%d", &m); while (m--) { getchar(); scanf("%c%d%d", &c, &a, &b); if (c == 'H') H[a][b] = true; else V[a][b] = true; }
int size[10] = {}; for (i = 1; i <= n; i++) { for (j = 1; j + i <= n; j++) for (int k = 1; k + i <= n; k++) if (check(j, k, i)) size[i]++; }
if (Case > 1) puts("n**********************************n");
bool flag = true; printf("Problem #%dnn", Case++); for (i = 1; i <= n; i++) if (size[i]) { printf("%d square (s) of size %dn", size[i], i); flag = false; } if (flag) puts("No completed squares can be found."); }
return 0; }
|
近期评论