细菌的繁殖与扩散

原创 2018年04月15日 21:13:10
总时间限制: 
1000ms
内存限制: 
65536kB
描述

在边长为9的正方形培养皿中,正中心位置有m个细菌。假设细菌的寿命仅一天,但每天可繁殖10个后代,而且这10个后代,有两个分布在原来的单元格中,其余的均匀分布在其四周相邻的八个单元格中。求经过n(1≤n≤4)天后,细菌在培养皿中的分布情况。

输入
输入为两个整数,第一个整数m表示中心位置细菌的个数(2 ≤ m ≤ 30),第二个整数n表示经过的天数(1 ≤ n ≤ 4)。
输出
输出九行九列整数矩阵,每行的整数之间用空格分隔。整个矩阵代表n天后细菌在培养皿上的分布情况。
样例输入
2 1
样例输出
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 2 2 2 0 0 0
0 0 0 2 4 2 0 0 0
0 0 0 2 2 2 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
来源

北大医学部07计算概论模拟考试1


源代码如下:

#include<stdio.h>
void init_sz();
void xjfz();
void xj();
void display();
int a[9][9]={0},b[9][9]={0};
int i,j;
int main()
{
	int m,n;
	scanf("%d %d",&m,&n);
	a[4][4]=m;
	for(int day=1;day<=n;day++)
	{
                init_sz();
	  		    xjfz();  //细菌繁殖; 
	  		    xj();  //新变旧 
    }
	display();
	return 0;
}
void init_sz()
{
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			b[i][j]=0; 
		}
	}
} 
void xjfz()
{
	for(i=1;i<=7;i++)
	{
		for(j=1;j<=7;j++)
		{
			b[i][j]+=2*a[i][j];  //中心细菌数 
			b[i][j-1]+=a[i][j];  //左面细菌数 
			b[i][j+1]+=a[i][j];  //右面细菌数 
			b[i-1][j]+=a[i][j];  //上面细菌数 
			b[i+1][j]+=a[i][j];  //下面细菌数 
			b[i-1][j+1]+=a[i][j];//左下细菌数 
			b[i+1][j+1]+=a[i][j];//右下细菌数 
			b[i+1][j-1]+=a[i][j];//右上细菌数 
			b[i-1][j-1]+=a[i][j];//左上细菌数 
		}
	}
}
void xj()
{
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			a[i][j]=b[i][j];
		}
	}
}
void display()
{
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			printf("%d",a[i][j]);
			if(j<8)
			{
				printf(" ");
			}
			else
			{
				printf("\n");
			}
		}
	}
}


错误代码:

#include<stdio.h>
void init_sz();
void xjfz();
void xj();
void display();
int a[9][9]={0},b[9][9]={0};
int i,j;
int main()
{
	int m,n;
	scanf("%d %d",&m,&n);
	a[4][4]=m;
	for(int day=1;day<=n;day++)
	{
          for(i=0;i<9;i++)
            {
               for(j=0;j<9;j++
                 {
                    init_sz();
	  		    xjfz();  //细菌繁殖; 
	  		    xj();  //新变旧 }
}
    }
	display();
	return 0;
}
void init_sz()
{
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			b[i][j]=0; 
		}
	}
} 
void xjfz()
{
	for(i=1;i<=7;i++)
	{
		for(j=1;j<=7;j++)
		{
			b[i][j]+=2*a[i][j];  //中心细菌数 
			b[i][j-1]+=a[i][j];  //左面细菌数 
			b[i][j+1]+=a[i][j];  //右面细菌数 
			b[i-1][j]+=a[i][j];  //上面细菌数 
			b[i+1][j]+=a[i][j];  //下面细菌数 
			b[i-1][j+1]+=a[i][j];//左下细菌数 
			b[i+1][j+1]+=a[i][j];//右下细菌数 
			b[i+1][j-1]+=a[i][j];//右上细菌数 
			b[i-1][j-1]+=a[i][j];//左上细菌数 
		}
	}
}
void xj()
{
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			a[i][j]=b[i][j];
		}
	}
}
void display()
{
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			
			if(j<8)
			{
				printf(" ");
			}
			else
			{
				printf("\n");
			}
		}
	}
}

错误原因:

1.数组没有初始化

2.没有先输出再空格换行

3.循环太多了....


还有老师的有一道题目输入了三个值居然成功的秀过了系统....偷偷滑稽

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yang_2002/article/details/79953003

15_细菌的繁殖与扩散

/* Name: 15_细菌的繁殖与扩散 Copyright: Author: Date: 29-08-17 10:53 Description: 15_细菌的繁殖与扩散 查看 提交 统...
  • QiaoRuoZhuo
  • QiaoRuoZhuo
  • 2017年08月29日 11:09
  • 533

noi多维数组 15:细菌的繁殖与扩散

15:细菌的繁殖与扩散 查看提交统计提问 总时间限制: 1000ms 内存限制: 65536kB 描述 在边长为9的正方形培养皿中,正中心位置有m个细菌。假设细菌的寿命仅一天,但每...
  • hongbudao
  • hongbudao
  • 2017年08月01日 11:52
  • 496

OpenJudge - 2712 细菌繁殖题解

一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。...
  • Oukar
  • Oukar
  • 2016年11月01日 19:24
  • 279

细菌的繁殖

Description 某种细菌(用'*'表示)繁殖遵循一定的规律。第一天的数量为1,以后按照如下方式繁殖: 第一天: * 第二天: * *** * 第三天: * *** ***** *** * 。。...
  • bifei8718
  • bifei8718
  • 2014年09月16日 19:10
  • 510

华为面试题细菌繁殖

题目大致原型如下: 当为1时: - 当为2时 - --- - 当为3时 - --- ----- --- - 最终解决代码如下: import java.util.ArrayList; impo...
  • shajianyin1
  • shajianyin1
  • 2015年05月01日 01:02
  • 863

15:细菌的繁殖与扩散

原题链接 总时间限制: 1000ms 内存限制: 65536kB 描述 在边长为9的正方形培养皿中,正中心位置有m个细菌。假设细菌的寿命仅一天,但每天可繁殖10个后代,而且这...
  • mayuan2017
  • mayuan2017
  • 2017年10月04日 09:45
  • 413

细菌繁殖

问题描述 一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个, 第三天变成40个,第四天变成80个,……。现在给出第一天的日期和细菌数目,要你 写程序求出到某一天的时候,...
  • u010844092
  • u010844092
  • 2013年10月07日 11:50
  • 815

POJ 百练 2712: 细菌繁殖

时间限制: 1000ms 内存限制: 65536kB 描述 一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。现在给出第一天的日...
  • youyang1991
  • youyang1991
  • 2011年08月27日 16:55
  • 1061

蓝桥杯java练习——递归算法细菌增值

假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃...
  • nufangdongde
  • nufangdongde
  • 2017年03月17日 21:01
  • 354

OpenJudge百炼-2712-细菌繁殖-C语言-日期处理

描述: 一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目...
  • OrdinaryCrazy
  • OrdinaryCrazy
  • 2017年08月10日 16:06
  • 609
收藏助手
不良信息举报
您举报文章:细菌的繁殖与扩散
举报原因:
原因补充:

(最多只允许输入30个字)