题解 P7550

· · 题解

本题根据题目直接模拟即可。

注意有一个坑:只能把原来存在的 # 扩展,而不能将扩展后产生的新 # 继续扩展。所以我们要使用一个布尔类型的数组来存储某一个 # 是否在原信件中存在,如果存在才进行扩展。

下面贴代码:

#include <bits/stdc++.h>
using namespace std;

char c[1005][1005];
bool f[1005][1005];
int main()
{
    int n, m;
    cin >> n >> m;
    for(int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cin >> c[i][j]; //读入
            if (c[i][j] == '#')
            {
                f[i][j] = true; //标记'#'
            }
        }
    }
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            if (f[i][j]) //扩展
            {
                c[i + 1][j] = '#';
                c[i + 1][j + 1] = '#';
                c[i][j + 1] = '#';
            }
        }
    }
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cout << c[i][j]; //输出
        }
        cout << endl; //别忘换行
    }
    return 0;
}