流感传染

流感传染


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 259     通过数: 129 

【题目描述】

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

【输入】

第一行一个数字n,n不超过100,表示有n*n的宿舍房间。

接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。

接下来的一行是一个整数m,m不超过100。

【输出】

输出第m天,得流感的人数。

【输入样例】

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

【输出样例】

16

【来源】


No

【代码】

#include
    
    
     
     
#include
     
     
      
      
 
int main()
{
    int n,m,i,j;
    char sickman[101][101];
    scanf("%d",&n); //输入宿舍的大小 
    for(i = 0; i < n; i++)
        scanf("%s", &sickman[i]);//输入每一行的宿舍情况 
     scanf("%d",&m);//输入天数 
    while(--m > 0) //输入的数组已经是第一天的情况了,所以这里要设置为前自减
    {
        for( i = 0; i < n; i++)
            for( j = 0; j < n; j++)
            {
                if(sickman[i][j] == '@')//如果这个宿舍是生病的人,则把他上下左右的人标记成*  
                {
                    if( i-1 >= 0 && sickman[i-1][j] == '.')
                        sickman[i-1][j] = '*';
                    if( i+1 < n  && sickman[i+1][j] == '.')
                        sickman[i+1][j] = '*';
                    if( j-1 >= 0  && sickman[i][j-1] == '.')
                        sickman[i][j-1] = '*';
                    if( j+1 < n  && sickman[i][j+1] == '.')
                        sickman[i][j+1] = '*';
                }
            }
 
        for( i = 0; i < n; i++)//把标记成*的人变为@,表示为被传染的人 
            for( j = 0; j < n; j++)
                if(sickman[i][j] == '*')
                    sickman[i][j] = '@';
             
    }
 
    int sum = 0;
    for( i = 0; i < n; i++)
        for( j = 0; j < n; j++)
                if(sickman[i][j] == '@')
                    ++sum;
    printf("%d\n",sum);
 
    return 0;
}
     
     
    
    

【说明】

dev-c++运行成功,提交通过


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值