💥前言
刷刷刷
😉解题报告
💥长草
☘️ 题目描述☘️
🤔一、思路:
(1)模拟遍历空地,每月遍历一次,将未曾标记草进行生长,循环k月将变化后的图进行输出;
😎二、代码:
// 标记,循环k月,输出
#include <bits/stdc++.h>
using namespace std;
char path[1100][1100];
int st[1100][1100];
int n, m, k;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
void check(int x, int y) {
for (int i = 0; i < 4; i++) {
int ax = x + dx[i];
int ay = y + dy[i];
if (ax >= 1 && ax <= n && ay >= 1 && ay <= m && path[ax][ay] == '.') {
path[ax][ay] = 'g';
st[ax][ay] = 1;
}
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = j = 1; j <= m; j++) {
cin >> path[i][j];
}
}
cin >> k;
while (k--) {
memset(st, 0, sizeof st);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (path[i][j] == 'g' && st[i][j] != 1) {
check(i, j);
}
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cout << path[i][j];
}
cout << endl;
}
return 0;
}