您的位置:首页 > 其它

UVA 10010 沃尔多夫在哪里

2012-08-17 23:59 435 查看
字符串基础题目

讨厌的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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: