站外题目求助:病毒扩散
  • 板块题目总版
  • 楼主Albert_Peng
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/24 17:14
  • 上次更新2024/11/24 17:17:35
查看原帖
站外题目求助:病毒扩散
1560058
Albert_Peng楼主2024/11/24 17:14

题目描述

今天在地图上已经有几个地点爆发了疫情,请找到第二天会有哪些地方受到威胁。输入是 5 * 5 的表格,用来表示地图上的疫情。E 表示现在没有疫情,A 表示已经有疫情。第二天,所有已有疫情地点的上下左右位置都会发展出疫情。请输出 5*5 的新表格,用来表示第二天的疫情。

输入输出格式

输入格式

5 * 5 的字符阵

输出格式

5 * 5 的字符阵

输入输出样例

输入样例#1:

EEEEE
EEEEE
AEEEE
EEEAE
EEEEE

输出样例#1:

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;
}

大佬们,救救我吧

2024/11/24 17:14
加载中...