我是靠谱客的博主 飞快流沙,最近开发中收集的这篇文章主要介绍流感传染C语言,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

流感传染

描述

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

输入

第一行一个数字n,n不超过100,表示有n*n的宿舍房间。 接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。 接下来的一行是一个整数m,m不超过100.

输出

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

输入样例 1 

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

输出样例 1

16
#include<stdio.h>
int main()
{
int n,i,j,m,k;
int num = 0;
char a[100][100],c;
scanf("%d%c",&n,&c);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%c",&a[i][j]);
}
getchar();
}
scanf("%d",&m);
for(k=0; k< m - 1; k++)
{
//最上面的一行
i=0;
for(j=1;j<n-2;j++){
if(a[i][j]=='@'){
if(a[i][j-1]=='.'){
a[i][j-1]='!';
}
if(a[i+1][j]=='.'){
a[i+1][j]='!';
}
if(a[i][j+1]=='.'){
a[i][j+1]='!';
}
}
}
//中间部分
for(i = 1;i < n-1;i++){
for(j=1;j < n-1;j++){
if(a[i][j] == '@'){
if(a[i][j-1]=='.'){
a[i][j-1]='!';
}
if(a[i][j+1]=='.'){
a[i][j+1]='!';
}
if(a[i-1][j]=='.'){
a[i-1][j]='!';
}
if(a[i+1][j]=='.') {
a[i+1][j]='!';
}
}
}
}
//最下面一行
i=n-1;
for(j = 1;j<n-2;j++){
if(a[i][j]=='@'){
if (a[i][j - 1] == '.') {
a[i][j - 1] = '!';
}
if (a[i][j + 1] == '.') {
a[i][j + 1] = '!';
}
if (a[i - 1][j] == '.') {
a[i - 1][j] = '!';
}
}
}
//最左边一溜
j = 0;
for (i = 1; i < n - 2; i++) {
if (a[i][j] == '@') {
if (a[i][j + 1] == '.') {
a[i][j + 1] = '!';
}
if (a[i - 1][j] == '.') {
a[i - 1][j] = '!';
}
if (a[i + 1][j] == '.') {
a[i + 1][j] = '!';
}
}
}
//最右边一溜
j = n - 1;
for (i = 1; i < n - 2; i++) {
if (a[i][j] == '@') {
if (a[i][j - 1] == '.') {
a[i][j - 1] = '!';
}
if (a[i - 1][j] == '.') {
a[i - 1][j] = '!';
}
if (a[i + 1][j] == '.') {
a[i + 1][j] = '!';
}
}
}
//左上角a[0][0]
if (a[0][0] == '@') {
if (a[0][1] == '.') {
a[0][1] = '!';
}
if (a[1][0] == '.') {
a[1][0] = '!';
}
}
//左下角a[n-1][0]
if (a[n - 1][0] == '@') {
if (a[n - 1][1] == '.') {
a[n - 1][1] = '!';
}
if (a[n - 2][0] == '.') {
a[n - 2][0] = '!';
}
}
//右上角a[0][n-1]
if (a[0][n - 1] == '@') {
if (a[0][n - 2] == '.') {
a[0][n - 2] = '!';
}
if (a[1][n - 1] == '.') {
a[1][n - 1] = '!';
}
}
//右下角a[n-1][n-1]
if (a[n - 1][n - 1] == '@') {
if (a[n - 1][n - 2] == '.') {
a[n - 1][n - 2] = '!';
}
if (a[n - 2][n - 1] == '.') {
a[n - 2][n - 1] = '!';
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (a[i][j] == '!') {
a[i][j] = '@';
}
}
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (a[i][j] == '@') {
num++;
}
}
}
printf("%dn", num);
return 0;
}

 易错点:1、m天,循环m-1次

              2、分类讨论应当全面,内部,四行,四点。

最后

以上就是飞快流沙为你收集整理的流感传染C语言的全部内容,希望文章能够帮你解决流感传染C语言所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(78)

评论列表共有 0 条评论

立即
投稿
返回
顶部