5.流感传染有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。请输出第m天得流感的人数。时间限制:1000内存限制:65536输入第一行一个数字n,n不超过100,表示有n*n的宿舍房间。 接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。 接下来的一行是一个整数m,m不超过100.输出输出第m天,得流感的人数样例输入5....#.#.@..#@..\#.........4样例输出16
这道题是一个经典的模拟题,需要模拟流感在网格状宿舍区内的传播过程。可以使用二维数组来模拟宿舍区,用一个字符数组来表示每个房间的状态,’.’表示健康,’#’表示空房间,’@’表示得流感。从第一天开始,每天模拟一次传播过程,统计得流感的人数。具体的实现思路如下:1. 读入宿舍区的大小n和第一天每个房间的状态,用字符数组表示。2. 读入天数m。3. 从第二天开始,遍历每一天,对于每个得流感的人,将其邻居标记为可能得流感。4. 重复步骤3,直到第m天。5. 统计第m天得流感的人数,输出。
【喵呜刷题小喵解析】:这道题是一道模拟题,需要模拟流感在网格状宿舍区内的传播过程。由于宿舍区是网格状的,可以用二维数组来表示每个房间的状态。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,空房间不会传染。因此,我们需要模拟这个传播过程,统计第m天得流感的人数。具体的实现中,我们需要用到字符数组来表示每个房间的状态,使用一个循环来模拟每一天的传播过程。在每次循环中,我们需要遍历每个得流感的人,将其邻居标记为可能得流感。这个过程可以使用四个方向的指针来实现,分别表示上下左右四个方向。在每次遍历中,我们只需要检查邻居的房间状态,如果是空房间,则不进行处理;如果是健康的人,则将其标记为可能得流感。最后,我们需要在第m天统计得流感的人数,并输出。可以使用一个计数器来统计得流感的人数,每次遍历到得流感的人,就将计数器加1。最终,输出计数器的值即可。需要注意的是,由于宿舍区的大小和天数都比较大,我们需要使用高效的算法来实现。可以使用指针来遍历每个房间,避免使用循环来遍历整个数组,从而提高算法的效率。同时,由于宿舍区是网格状的,我们可以利用矩阵的性质来优化算法,例如使用四个方向的指针来遍历邻居的房间,避免重复遍历。