6262:流感传染

2018-06-17 23:07:02来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:31:字符串中最长的连续出现的字符

下一篇:【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景