2020年1月13日 星期一

Largest Square

題目:
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;
}

沒有留言:

張貼留言