首页 > 其他分享 >PTA 感染人数

PTA 感染人数

时间:2023-11-28 21:33:23浏览次数:38  
标签:样例 房间 感染 PTA 输入 人数 流感

7-1 感染人数

作者 黄龙军  单位 绍兴文理学院 设某住宿区域是一个n×n的方阵,方阵中的每个小方格为一个房间,房间里可能住一个人,也可能空着。第一天,某些房间中住着的人得了一种高传染性的流感,以后每一天,得流感的人会使其邻居(住在其上、下、左、右方向存在的房间里面的人)传染上流感,请问:第m天总共有多少人得流感?

输入格式:

第一行输入两个整数n,m(1<n≤20,1≤m≤100),含义如上述;接着输入n行,每行n个字符,表示住宿区域第一天的房间情况,其中,@表示当天该房间住着得流感的人,.表示该房间住着健康的人,#表示该房间是空的。

输出格式:

输出一个整数,表示第m天得了流感的人数。

输入样例1:

5 3
#....
.....
...##
.#.@.
@.#..

输出样例1:

10

输入样例2:

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

输出样例2:

16

分析:

  1. 输入住宿人群的情况时要注意回车的输入
  2. 因为要求的是m天内总共感染的人数,第一天是给出的感染人数,所以循环天数要减1次。
  3. 因为所求天数m天内都会有新的人被感染,所以要将新感染的人和前一天/初始被感染的人区分开。所以给新感染人设置一个不同的符号(例如:‘1’或者其他都可以)。同时循环到当前房间时,它左边那一个和上面那一个当天已经遍历过了,就可以直接设置为‘@’,而右边和下面没有,先设置为‘1’,然后多加一个判断是不是‘1’,是就将其改为‘@’;或者把上下左右都改成‘1’,最后一起改成‘@’。
  4. 最后循环整个数组,计算出‘@’的个数就是感染的总人数

通过的代码:

#include<iostream>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    char a[n][n];
    cin.get();
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            a[i][j]=cin.get();
        }
        cin.get();
    }
    for(int k=1;k<m;k++){
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(a[i][j]=='@'){
                    if(i>0&&a[i-1][j]=='.') a[i-1][j]='@';
                    if(i<n-1&&a[i+1][j]=='.') a[i+1][j]='1';
                    if(j>0&&a[i][j-1]=='.') a[i][j-1]='@';
                    if(j<n-1&&a[i][j+1]=='.') a[i][j+1]='1';
                }
                if(a[i][j]=='1'){
                    a[i][j]='@';
                }
            }
        }
    }
    int count=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(a[i][j]=='@') count++;
        }
    }
    cout<<count<<endl;
}

标签:样例,房间,感染,PTA,输入,人数,流感
From: https://www.cnblogs.com/qq286442936/p/17863142.html

相关文章

  • java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.LoopTag问题的解决
    问题描述问题解决将这个依赖:改成这个依赖:......
  • iptables 杂谈ACCEPT和RETURN
    iptables杂谈ACCEPT和RETURN这两个目标,确实比较模糊。目录iptables杂谈ACCEPT和RETURN实验结论实验这里是实验的情况:新建两个iptables的规则链,并且相连,如果是ACCEPT:-Nmy_rule_1-Nmy_rule_2-Amy_rule_1-jACCEPT-Amy_rule_2-jACCEPT-Aparental_ctrl_0-jmy_......
  • 感染人数
    7-1感染人数设某住宿区域是一个n×n的方阵,方阵中的每个小方格为一个房间,房间里可能住一个人,也可能空着。第一天,某些房间中住着的人得了一种高传染性的流感,以后每一天,得流感的人会使其邻居(住在其上、下、左、右方向存在的房间里面的人)传染上流感,请问:第m天总共有多少人得流感?......
  • PTA-ch7b-5 : 最小工期
    最小工期一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。输入格式:首先第一行给出两个正整数:项目里程碑的数量N......
  • 第八章iptables防火墙
    安装iptables服务保存不上,可能没安装iptables服务yuminstalliptables-services.x86_64关闭防火墙systemctlstopfirewalldsystemctlmaskfirewalld2安装iptables服务yuminstalliptables-services3设置iptables服务开机启动systemctlenableiptables4重启iptab......
  • Docker启动失败,提示"iptables: No chain/target/match by that name"
    一、问题现象docker容器报错:docker:Errorresponsefromdaemon:driverfailedprogrammingexternalconnectivityonendpointetlmysql(12ccdbcef942bef6f32dbfc157dd1b49319ee2df4d68bf7b9a9b9ea88b5bd4fa):(iptablesfailed:iptables--wait-tnat-ADOCKER-ptc......
  • linux iptables初步理解
    引用:https://www.bilibili.com/video/BV1Jz4y1u7Lz/?spm_id_from=333.788&vd_source=e05f4a55dd5d8e27f74472aa7fd97ace1.iptables处理模型:linux内核有一个netfilter框架来设置这个防火墙linux可以像路由器一样做转发处理的,所以流量处理就有如下路径:iptables有四......
  • firewalld与iptables区别
    ComparisonofFirewalldtosystem-config-firewallandiptablesTheessentialdifferencebetweenfirewalldandiptablesserviceare:Theiptablesservicestoresconfigurationin/etc/sysconfig/iptableswhilefirewalldstoresitinvariousXMLfilesin/u......
  • ContentProvider 之 写入联系人数据
    在项目ContentProviderSample代码基础上实现写入共享联系人数据的示例,具体步骤如下:在AndroidManifest.xml中,添加写入联系人数据的权限编辑布局文件activity_contacts.xml,界面上布局三个文本输入框用于填写联系人名称、电话号码和邮箱账号和确认写入按钮。编写代码ContactsActivi......
  • PTA题目集4、5、6以及期中考试的总结
    一、前言在过去做完的PTA题目集4、5、6以及期中考试,相比前几次的题目集来说难度都相对提高了许多,对于基础相对比较薄弱的我做起来也比较吃力,但是题量比之前都少了很多,后两次题目集都只有菜单计价程序一题,最主要的也还是菜单计价程序这一类题目,代码量很大。这类题目对于类的考察......