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;
}
沒有留言:
張貼留言