1191:流感传染

流感传染

做这题时,程序最容易犯的错误就是认为“今天刚染病的人也具有传染性

显然,今天刚染病的人昨天是不具有传染性的,所以今天染病的人绝不是因这种刚染病的人引起的!

所以在检查健康人今天是否存在染病风险时,应避免这一误区!

我这里使用的方法是对病人染病日期进行记录

 1 #include<iostream>
 2 using namespace std;
 3 
 4 const int N=105;
 5 int n,ans,a[N][N];
 6 
 7 //a[i][j]存在且染病返回1
 8 bool check(int i,int j,int k){
 9     if(i>0&&i<=n&&j>0&&j<=n&&a[i][j]>0&&a[i][j]<k)
10         return 1;
11     return 0;
12 }
13 int main(){
14     int m;
15     cin>>n;
16     for(int i=1;i<=n;i++){
17         for(int j=1;j<=n;j++){
18             char c;
19             cin>>c;
20             if(c=='.')a[i][j]=-1;
21             else if(c=='#')a[i][j]=0;
22             else{
23                 a[i][j]=1;
24                 ans++;
25             }
26         }
27     }
28     cin>>m;
29     for(int k=2;k<=m;k++){        
30         for(int i=1;i<=n;i++){
31             for(int j=1;j<=n;j++){
32                 if(a[i][j]==-1&&
33                     (check(i-1,j,k)||check(i+1,j,k)||check(i,j-1,k)||check(i,j+1,k))){
34                         a[i][j]=k;
35                         ans++;
36                     } 
37             }
38         }   
39     }
40     cout<<ans<<endl;
41     return 0;
42 }

 

posted @ 2021-08-03 15:32  Rekord  阅读(420)  评论(0编辑  收藏  举报