openjudge 2.3 6262 流感传染

题目来源:OpenJudge - 6262:流感传染

总时间限制:1000ms  内存限制:65536kB

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

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

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

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

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

样例输入:

样例输入

样例输出:

样例输出

思路:定义变量lg,赋初始值为ASCII码64,即‘@’(本题表现为第一天患有流感的人),循环判断,若是‘@’,它的上下左右若是‘.’,就更改为lg+1,if判断完要lg++,定义计数器num,循环判断,若不是‘#’并且也不是‘.’,num++,输出。

代码:

#include<bits/stdc++.h>

using namespace std;

char a[110][110];

int main() {

int n,m,lg=64;

cin>>n;

for(int i=1; i<=n; i++)

for(int j=1; j<=n; j++)

cin>>a[i][j];

cin>>m;

for(int t=2; t<=m; t++) {

for(int i=1; i<=n; i++)

for(int j=1; j<=n; j++)

if(a[i][j]==lg) {

if(a[i-1][j]=='.') a[i-1][j]=lg+1;

if(a[i][j-1]=='.') a[i][j-1]=lg+1;

if(a[i][j+1]=='.') a[i][j+1]=lg+1;

if(a[i+1][j]=='.') a[i+1][j]=lg+1;

}

lg++;

}

int num=0;

for(int i=1; i<=n; i++) {

for(int j=1; j<=n; j++) {

if(a[i][j]!='#'&&a[i][j]!='.')

num++;

}

}

cout<<num;

return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,214评论 0 2
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,261评论 0 2
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 8,589评论 0 9
  • 幺姬公主 一.兄妹 夜城地处秦魏韩三国交界的安旭小镇,它是墨家弟子开的一家客栈,栈主老板没人知道他真实姓名,大家只...
    喻芷楚阅读 4,527评论 3 9
  • 11月30号,21天小白的课程正式上完,画上了句号。说实话,真的舍不得,里面学习的氛围好好。得过一次优秀作业,最后...
    小海格阅读 1,427评论 0 1

友情链接更多精彩内容