可以帮我看看我这个思路写出来的代码有什么问题吗😭

img


代码:

#include<stdio.h>
int main()
{
    long long t, n, m, num;
    char a[1010][1010];
    long long i, j, k, x, y;
    scanf("%lld", &t);
    for (i = 0; i < t; i++)
    {
        num = 0;
        scanf("%lld %lld", &n, &m);
        for (j = 0; j < m; j++)
            scanf("%s", a[j]);
        for (j = 0; j < m; j++)
            for (k = 0; k < n; k++)
                if (a[j][k] == '*')
                    for (x = j - 1; x < j + 2; x++)
                        for (y = k - 1; y < k + 2; y++)
                            if (x >= 0 && x < m && y >= 0 && y < n && a[x][y] == 'P')
                                a[x][y] = '#';
        for (j = 0; j < m; j++)
            for (k = 0; k < n; k++)
                if (a[j][k] == 'P')
                    num++;
        printf("%lld\n", num);
    }
    return 0;
}

兄弟,用那个插入代码块的方式来贴代码吧,你这样的代码都没有层级了,看着好难受😂

你的程序里nm弄反了。nm的字符矩阵表示的是n行m列

把11行的m,n交换一下试试,改成:scanf("%lld %lld", &m, &n);