6262:流感传染

时间:2022-05-08
本文章向大家介绍6262:流感传染,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

6262:流感传染

总时间限制: 1000ms 内存限制: 65536kB描述

有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。请输出第m天得流感的人数。

输入第一行一个数字n,n不超过100,表示有n*n的宿舍房间。 接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。 接下来的一行是一个整数m,m不超过100.输出输出第m天,得流感的人数样例输入

5
....#
.#.@.
.#@..
#....
.....
4

样例输出

16
 1 #include<cstring>
 2 #include<iostream>
 3 using namespace std;
 4 int n,t,ans;
 5 int a[110][110];
 6 bool b[110][110];
 7 char d[110][110];
 8 int main() {
 9     cin>>n;
10     for(int i=1; i<=n; i++)
11         for(int j=1; j<=n; j++)
12         {
13             cin>>d[i][j];
14             if(d[i][j]=='.')
15                 a[i][j]=1;
16             else if(d[i][j]=='@')
17                 a[i][j]=0;
18             else
19                 a[i][j]=-1;//1表示健康,0表示患病 ,-1表示无人
20         }
21     cin>>t;
22     for(int k=2; k<=t; k++) 
23     {
24         memset(b,true,sizeof(b));
25         for(int i=1; i<=n; i++)
26             for(int j=1; j<=n; j++) 
27             {
28                 if(a[i][j]==0&&b[i][j]==true) 
29                 {
30                     if(a[i-1][j]==1 ) 
31                     {
32                         a[i-1][j]=0;
33                         b[i-1][j]=false;
34                     }
35                     if(a[i+1][j]==1 ) 
36                     {
37                         a[1+i][j]=0;
38                         b[i+1][j]=false;
39                     }
40                     if(a[i][j-1]==1 ) 
41                     {
42                         a[i][j-1]=0;
43                         b[i][j-1]=false;
44                     }
45                     if(a[i][j+1]==1 ) 
46                     {
47                         a[i][j+1]=0;
48                         b[i][j+1]=false;
49                     }
50                 }
51             }
52     }
53     for(int i=1; i<=n; i++)
54     for(int j=1; j<=n; j++)
55         if(a[i][j]==0)
56             ans++;
57     cout<<ans;
58     return 0;
59 }

 过程

....# .#.@. .#@.. #.... ..... 2

...@# .#@@@ .#@@. #.@.. .....                 7

..@@# .#@@@ .#@@@ #@@@. ..@..                12

.@@@# .#@@@ .#@@@ #@@@@ .@@@.           16