今天在地图上已经有几个地点爆发了疫情,请找到第二天会有哪些地方受到威胁。输入是 5 * 5 的表格,用来表示地图上的疫情。E 表示现在没有疫情,A 表示已经有疫情。第二天,所有已有疫情地点的上下左右位置都会发展出疫情。请输出 5*5 的新表格,用来表示第二天的疫情。
5 * 5 的字符阵
5 * 5 的字符阵
EEEEE
EEEEE
AEEEE
EEEAE
EEEEE
EEEEE
AEEEE
AAEAE
AEAAA
EEEAE
我目前的代码是酱紫的:
# include <cstdio>
# include <algorithm>
using namespace std;
char virus [5] [5];
bool new_virus [5] [5];
int main () {
fill_n(&new_virus [0] [0], 5 * 5, 1);
for (int i = 0; i < 5; i ++) {
for (int j = 0; j < 5; j ++) {
scanf(" %c", &virus [i] [j]);
}
}
for (int i = 0; i < 5; i ++) {
for (int j = 0; j < 5; j ++) {
if (virus [i] [j] == 65 && new_virus [i] [j]) {
new_virus [i] [j] = 0;
if (i - 1 >= 0) {
virus [i - 1] [j] = 65;
new_virus [i - 1] [j] = 0;
}
if (i + 1 < 5) {
virus [i + 1] [j] = 65;
new_virus [i + 1] [j] = 0;
}
if (j - 1 >= 0) {
virus [i] [j - 1] = 65;
new_virus [i] [j - 1] = 0;
}
if (j + 1 < 5) {
virus [i] [j + 1] = 65;
new_virus [i] [j + 1] = 0;
}
if (i - 1 >= 0 && j - 1 >= 0) {
virus [i - 1] [j - 1] = 65;
new_virus [i - 1] [j - 1] = 0;
}
if (i - 1 >= 0 && j + 1 < 5) {
virus [i - 1] [j + 1] = 65;
new_virus [i - 1] [j + 1] = 0;
}
if (i + 1 < 5 && j - 1 >= 0) {
virus [i + 1] [j - 1] = 65;
new_virus [i + 1] [j - 1] = 0;
}
if (i + 1 < 5 && j + 1 < 5) {
virus [i + 1] [j + 1] = 65;
new_virus [i + 1] [j + 1] = 0;
}
}
}
}
for (int i = 0; i < 5; i ++) {
for (int j = 0; j < 5; j ++) {
printf ("%c", virus [i] [j]);
}
printf ("\n");
}
return 0;
}
大佬们,救救我吧