字符串基础题目
讨厌的scanf
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
///
#define INF 0xffffff7
#define MAXN 60
char grid[MAXN][MAXN];
int m, n, kk;
char word[MAXN];
const int rd[]={-1, -1, 0, 1, 1, 1, 0, -1},cd[]={0, 1, 1, 1, 0, -1, -1, -1};
bool search_word(int startrow, int startcol, int len)
{
int i, j;
for (i = 0; i < 8; i++)
{
j = 0;
int temprow = startrow;
int tempcol = startcol;
while (j < len)
{
if (temprow < 0 || temprow >= m || tempcol < 0 || temprow >= n)
break;
if ( (grid[temprow][tempcol] == word[j]) || (grid[temprow][tempcol] - word[j] == 'A' - 'a') || (word[j] - grid[temprow][tempcol] == 'A' - 'a'))
{
temprow += rd[i];
tempcol += cd[i];
j++;
}
else
break;
}
if (j == len)
return true;
}
return false;
}
int main()
{
///
int i, j;
int nCases;
scanf("%d", &nCases);
// cin >> nCases;
while (nCases--)
{
memset(grid, 0, sizeof(grid));
scanf("%d%d", &m, &n);
for (i = 0; i < m; i++)
{
getchar();
for (j = 0; j < n; j++)
scanf("%c", &grid[i][j]);
}
// cin >> grid[i][j];
scanf("%d", &kk);
getchar();
for (i = 0; i < kk; i++)
{
gets(word);
bool flag = false;
int len = strlen(word);
for (j = 0; j < m; j++)
{
for (int k = 0; k < n; k++)
{
if (search_word(j, k, len))
{
printf("%d %d\n", j + 1, k + 1);
flag = true;
break;
}
}
if (flag)
break;
}
}
if (nCases != 0)
printf("\n");
}
///
return 0;
}