zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    03_Redis数据类型(List)
    02_Redis数据类型(String、Hash)
    01_Redis基础
    22_AOP_切面——静态切面
    21_AOP_Advice增强2(异常、引介)
    20_AOP_Advice增强1(前置、后置、环绕)
    19_AOP概述
    18_CGLib动态代理
    利用NTP搭建自己的ntp服务
    VM设置BIOS延长时间
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6542667.html
Copyright © 2011-2022 走看看