题目:流感传染


题目描述

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

输入输出格式

输入格式:

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

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

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

输出格式:

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

输入输出样例

输入样例:

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

输出样例:

16

我们很快就想到用循环把每天被传染的人进行标记,但是运行后我们发现每一次只要一两天就把所有人感染了,因为被感染的人标记后,程序又将它进行传染,重复了。

怎么办呢,很多人想到用两个数组。其实不用,只要用-1,0,1分别表示空的,昨天被感染的,和今天被感染的。这就节省了内存。

注意事项:应为题目说“以后每天,得流感的人会使其邻居传染上流感,”,所以天数一定要减1

代码如下比较长

#include<iostream>
#include<cstdio>
using namespace std;
long long sum=0;
int n,m,a[110][110],i,j;
char a1;
int main()
{cin>>n;for(i=1;i<=n;i++)for(j=1;j<=n;j++){cin>>a1;if(a1=='.')a[i][j]=0;if(a1=='@')a[i][j]=1;if(a1=='#')a[i][j]=-1;}cin>>m;while(m>1){m--;for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(a[i][j]==1){if(a[i+1][j]==0)a[i+1][j]=2;if(a[i-1][j]==0)a[i-1][j]=2;if(a[i][j+1]==0)a[i][j+1]=2;if(a[i][j-1]==0)a[i][j-1]=2;}}for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(a[i][j]==2)a[i][j]=1;}for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(a[i][j]==1)sum++;}}cout<<sum;return 0;
}

流感传染 C++ 递推相关推荐

  1. 1191:流感传染(递推)

    问题描述: [题目描述] 有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着.在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染 ...

  2. C++奥赛一本通递推题解

    title: C++奥赛一本通刷题记录(递推) date: 2017-11-08 tags: 一本通 openjudege categories: OI C++奥赛一本通刷题记录(递推) 2017.1 ...

  3. 一本通:1191流感传染

    一本通:流感传染 [题目描述] 有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着.在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻 ...

  4. 一本通题解——1191:流感传染

    题目相关 题目链接 一本通 OJ,http://ybt.ssoier.cn:8088/problem_show.php?pid=1191. 题目描述 有一批易感人群住在网格状的宿舍区内,宿舍区为 n* ...

  5. P1541 乌龟棋 题解(洛谷,动态规划递推)

    题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...

  6. 基础算法整理(1)——递归与递推

    程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一 ...

  7. hdu 5366 简单递推

    记f[i]为在长度是i的格子上面至少放一个木桩的方法数.考虑第i个格子,有放和不放两种情况. 1.如果第i个格子放了一个木桩,则i - 1和i - 2格子上面不能放木桩,方案数为:f[i - 3] + ...

  8. 第十一届山东省大学生程序设计竞赛 L. Construction of 5G Base Stations(概率期望,递推前缀和优化)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 第十一届山东省大学生程序设计竞赛 L. Construction of 5G Base Station ...

  9. 2019 ICPC Asia Nanjing Regional C.Digital Path(拓扑排序递推DP)

    整理的算法模板合集: ACM模板 题目传送门 三段题面,只有第三段是有用的-前两段又长单词又难懂,就是在讲故事...不过针对四种情况给出四个图帮助我们理解题意是真的赞,可能出题人怕我们看不懂吧(第一句 ...

最新文章

  1. ICML2018见闻 | 迁移学习、多任务学习领域的进展
  2. 了解React.js中数组子项的唯一键
  3. linux 64 nc,linux 命令之nc
  4. Android—Gson原理解析
  5. html设置table border,用css来设置table的border
  6. Actor-ES框架:Ray-Handler之ToReadHandler编写
  7. mysql 多行拼接注入_MySQL注入汇总
  8. PWN-PRACTICE-BUUCTF-15
  9. Android 系统(147)---proc—cpufreq
  10. BZOJ 1070: [SCOI2007]修车
  11. 第 19 章 迭代器模式
  12. 索尼rx1r人脸识别_徕卡Q2 索尼rx1r2对比
  13. 占优策略名词解释_占优策略
  14. 男女逗段,瞅瞅有没有说到你
  15. c语言正方形内切圆面积,c语言计算并输出某正方形内切圆的面积
  16. git 上上下下左左右右AABB
  17. java 区分中英文_在java中如何判断一个字符串是中文的还是英文的
  18. 紫书 UVa437巴比伦塔
  19. js:写一个函数实现任意数组的翻转
  20. python爬虫篇,零基础学爬虫之精华版

热门文章

  1. brew cask install 和 brew install 的区别
  2. vm-quick-start使用
  3. 应用程序设计:图书管理系统模板(链表+文件)
  4. Altera 的GPP LTE 基站解决方案
  5. 实施(运维)工程师 笔试问答题
  6. NEO4J搭建京东手机类小型知识图谱
  7. oracle crsctl详解,Oracle RAC 集群 crsctl 常用命令大全
  8. Ceph RBD 的实现原理与常规操作
  9. 计算机中恢复是什么的反操作,word文档恢复在哪里
  10. SQL教程——order by语法