UVa-10908
(讀檔)
程式碼:
#include <stdio.h> #include <stdlib.h> #include "FileHandler.h" int main() { char *str = readAllTextFromFile("./input.txt"); int testcase = 0, i_now = 0; while (str[i_now] != '\n') { testcase = str[i_now] - '0' + testcase * 10; i_now++; } i_now++; while (testcase--) { int m = 0, n = 0, q = 0; while (str[i_now] != ' ') { m = str[i_now] - '0' + m * 10; i_now++; } i_now++; while (str[i_now] != ' ') { n = str[i_now] - '0' + n * 10; i_now++; } i_now++; while (str[i_now] != '\n') { q = str[i_now] - '0' + q * 10; i_now++; } i_now++; printf("%d %d %d\n", m, n, q); char map[105][105]; for (int i = 0; i < m; i++) { for (int j = 0; j <= n; j++) { if (str[i_now] != '\n') map[i][j] = str[i_now]; i_now++; } } while (q--) { int r = 0, c = 0, ans = 1; while (str[i_now] != ' ') { r = str[i_now] - '0' + r * 10; i_now++; } i_now++; while (str[i_now] != '\n'&&str[i_now] != NULL) { if (c > 100) break; c = str[i_now] - '0' + c * 10; i_now++; } i_now++; //printf("%d %d\n", r, c); for (int i = 0; i <= m || i <= n; i++) { int flag = 1; for (int j = r - i; j <= r + i; j++) { for (int k = c - i; k <= c + i; k++) { if (j < 0 || k < 0 || j >= m || k >= n) { flag = 0; break; } if (map[j][k] != map[r][c]) { flag = 0; } } } if (flag) ans = 2 * i + 1; else break; } printf("%d\n", ans); } } system("pause"); return 0; }
沒有留言:
張貼留言