繁体   English   中英

如何在 C 中解决这个 Char 矩阵问题?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM