代码如下:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n; // 输入字符矩阵的大小
char arr[n][n]; // 声明字符矩阵
// 读取字符矩阵
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cin >> arr[i][j];
}
}
int m;
cin >> m; // 输入操作次数
// 执行m-1次操作
for (int k = 0; k < m - 1; k++)
{
char new_arr[n][n]; // 用于存储更新后的字符矩阵
// 更新字符矩阵
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (arr[i][j] == '#')
{
new_arr[i][j] = '#';
}
else if (arr[i][j] == '.')
{
// 判断相邻位置是否有特定字符,并根据条件更新字符矩阵
if ((i > 0 && arr[i - 1][j] == '@') ||
(i < n - 1 && arr[i + 1][j] == '@') ||
(j > 0 && arr[i][j - 1] == '@') ||
(j < n - 1 && arr[i][j + 1] == '@'))
{
new_arr[i][j] = '@';
}
else
{
new_arr[i][j] = '.';
}
}
else if (arr[i][j] == '@')
{
new_arr[i][j] = '@';
}
}
}
// 将更新后的字符矩阵复制给原始字符矩阵
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
arr[i][j] = new_arr[i][j];
}
}
}
int nal = 0;
// 统计特定字符在字符矩阵中的出现次数
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (arr[i][j] == '@')
{
nal++;
}
}
}
cout << nal; // 输出特定字符的出现次数
return 0;
}