[英]How can I solve this Char matrix problem in C?
给定一个单词、一个数字 n 和一个由 n 个字符组成的矩阵。 我必须找到单词在矩阵中的位置并输出起点的坐标。 可以找到单词从右到左,从左到右,从上到下或从下到上,所以 4 个方向。
例如:
mere
5
erema
hereb
bmere
bamer
aemre ---> output: 0 3 (right->left)
0 3 (up->down)
2 1 (left->right)
3 2 (down ->up)
这是我在 main() 中编写的代码,但它没有显示正确的内容。
int n, c, x, y, z, x1, t, x2, r, x3; char s[101];
fgets(s, 101, stdin);
printf("n="); scanf_s("%d", &n);
char a[90][90];
for (int i = 0; i < n+1; i++)
{
for (int j = 0; j < n; j++)
{
c = getchar();
a[i][j] = c;
}
}
for (int i = 0; i < n+1; i++)
{
for (int j = 0; j < n; j++)
{
if (a[i][j] == s[0])
{
x = 0; x1 = 0; x2 = 0; x3 = 0; y = j - 1; z = j + 1; t = i + 1, r = i - 1;
for (int k = 1; k < strlen(s); k++) {
if (s[k] == a[i][y])
{
x++; y--;
}
}
if (x == strlen(s) - 1) printf("%d %d\n", i, j);
for (int k = 1; k < strlen(s); k++)
{
if (s[k] == a[i][z])
{
x1++; z++;
}
}
if (x1 == strlen(s) - 1) printf("%d %d\n", i, j);
for (int k = 1; k < strlen(s); k++)
{
if (s[k] == a[t][j])
{
x2++; t++;
}
}
if (x2 == strlen(s) - 1) printf("%d %d\n", i, j);
for (int k = 1; k < strlen(s); k++)
{
if (s[k] == a[r][j])
{
x3++; r--;
}
}
if (x3 == strlen(s) - 1) printf("%d %d\n", i, j);
}
}
}
s_scanf()
getchar()
之后的另一个getchar()
只是为了消耗'\\n'
字符应该这样做。
printf("n="); scanf_s("%d", &n);
getchar();
这仅在您想摆脱scanf()
留下的'\\n'
字符时才有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.