#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;
}
兄弟,用那个插入代码块的方式来贴代码吧,你这样的代码都没有层级了,看着好难受😂
你的程序里n
和m
弄反了。n
乘m
的字符矩阵表示的是n行m列
把11行的m,n交换一下试试,改成:scanf("%lld %lld", &m, &n);