寒假的比赛题

对于多组输入样例t的题 最好在while(t--)
里面进行这个初始话 防止用了上次样例的结果 还要注意cout<<endl;

1.顽皮恶魔 保护植物

输入样例
1
5 5
ZPZPZ
PPZP
ZPZPZ
PZPZP
ZP
PZ


#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int dx[8] = {1, 1, 1, 0, -1, -1, -1, 0};
int dy[8] = {1, 0, -1, -1, -1, 0, 1, 1};
int main()
{
    int t;
    cin >> t;
    while(t--)
    {
        char a[N][N];
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1; i<=n; i++)
        {
             scanf("%s",a[i]+1);//这样读入字符串防止回车符
        }
       for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j) {
            if (a[i][j] == '*') {
                for (int k = 0; k < 8; ++k) {
                    int nx = i + dx[k], ny = j + dy[k];
                   if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && a[nx][ny] == 'P')
                        a[nx][ny] = 's';//不要写成'*'否则会感染
                }
            }
        }
        int res=0;
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=m; j++)
            {
              
                if(a[i][j]=='P') res++;
            }
        }
        printf("%d\n",res);
    }
    return 0;
}
另一种做法 找p旁白你有没有*又就不计算
上一篇:【刷题】【cf】C.Complex Market Analysis


下一篇:2022.01.22 33期 Linux 第七课 shell脚本 for 循环 while循环 用户身份与权限