欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用C語(yǔ)言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散

 更新時(shí)間:2021年11月02日 11:31:18   作者:Tim_zf  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一.引言

這是我在csdn寫(xiě)的第一篇文章~作為一個(gè)初學(xué)C的萌新,昨天碰到一道關(guān)于細(xì)菌繁殖與擴(kuò)散的題目,覺(jué)得很有意思,想了一個(gè)晚上,終于想到了解法😄

二.題目

詳情細(xì)菌的繁殖與擴(kuò)散​​​​​​

總時(shí)間限制: 1000ms 內(nèi)存限制: 65536kB

描述:

在邊長(zhǎng)為9的正方形培養(yǎng)皿中,正中心位置有m個(gè)細(xì)菌。假設(shè)細(xì)菌的壽命僅一天,但每天可繁殖10個(gè)后代,而且這10個(gè)后代,有兩個(gè)分布在原來(lái)的單元格中,其余的均勻分布在其四周相鄰的八個(gè)單元格中。求經(jīng)過(guò)n(1≤n≤4)天后,細(xì)菌在培養(yǎng)皿中的分布情況。

輸入:

輸入為兩個(gè)整數(shù),第一個(gè)整數(shù)m表示中心位置細(xì)菌的個(gè)數(shù)(2 ≤ m ≤ 30),第二個(gè)整數(shù)n表示經(jīng)過(guò)的天數(shù)(1 ≤ n ≤ 4)。

輸出:

輸出九行九列整數(shù)矩陣,每行的整數(shù)之間用空格分隔。整個(gè)矩陣代表n天后細(xì)菌在培養(yǎng)皿上的分布情況。

樣例輸入

21

樣例輸出

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

三.思路以及代碼

思路

我的想法是這道題需要定義兩個(gè)二維數(shù)組,一個(gè)用來(lái)儲(chǔ)存上一天的數(shù)據(jù)(舊),一個(gè)用來(lái)計(jì)算并保存這一天的數(shù)據(jù)(新)。而這一天的數(shù)據(jù)又可以保存到舊數(shù)據(jù)中,用于下一天的計(jì)算(遞推)。

首先,在原位置上的每一個(gè)細(xì)菌都可以生兩個(gè)崽兒在原先的位置,并且在周?chē)陌藗€(gè)格子中各留下一個(gè)新生兒😝然后不幸凋亡……

這樣,我們先把上一天的數(shù)據(jù)保存在舊數(shù)據(jù)矩陣中,然后把上一天每個(gè)數(shù)據(jù)都乘以二放到新數(shù)據(jù)的矩陣中(0*2=0所以不用管),這是第一次循環(huán)。然后再進(jìn)行一次循環(huán),判斷如果舊數(shù)據(jù)矩陣的某一個(gè)位置的數(shù)據(jù)不為零,就在新數(shù)據(jù)矩陣對(duì)應(yīng)位置的周?chē)藗€(gè)格子都加上該數(shù)據(jù),這一步就相當(dāng)于細(xì)菌在周?chē)鷨卧裰械臄U(kuò)散。這樣我們就完成了遞推過(guò)程。

注意哦,這個(gè)遞歸只能進(jìn)行四天(循環(huán)四次),要不然可能出現(xiàn)堆棧錯(cuò)誤……

代碼

#include<stdio.h>
int main()
{
	int old[9][9], birth[9][9];//舊的培養(yǎng)基和新的培養(yǎng)基,用于遞推
	int m, n;//初始中央細(xì)菌數(shù)以及遞推的天數(shù)
	int i, j, p;
	scanf("%d%d", &m, &n);
	for (i = 0;i < 9;i++)
		for (j = 0;j < 9;j++)
		{
			birth[i][j] = 0;//變量的初始化
		}
	birth[4][4] = m;//中央細(xì)菌已經(jīng)長(zhǎng)出
	for (p = 1;p <= n;p++)//開(kāi)始遞推
	{
		for (i = 0;i < 9;i++)
			for (j = 0;j < 9;j++)
			{
				old[i][j] = birth[i][j];//舊培養(yǎng)基相當(dāng)于一個(gè)儲(chǔ)存容器,儲(chǔ)存上一天的培養(yǎng)基情況
				birth[i][j] = 2 * birth[i][j];//每個(gè)位置上的每個(gè)舊細(xì)菌生兩個(gè)崽,然后凋亡
			}
		for (i = 0;i < 9;i++)
			for (j = 0;j < 9;j++)
			{
				if (old[i][j] != 0)//如果舊培養(yǎng)基上某個(gè)位置有細(xì)菌,就在新培養(yǎng)基上它的周?chē)鲆蝗︶虄海ㄓ浀妹總€(gè)細(xì)菌各生一圈兒……)
				{
					birth[i - 1][j - 1] = birth[i - 1][j - 1] + old[i][j];
					birth[i - 1][j] = birth[i - 1][j] + old[i][j];
					birth[i - 1][j + 1] = birth[i - 1][j + 1] + old[i][j];
					birth[i][j - 1] = birth[i][j - 1] + old[i][j];
					birth[i][j + 1] = birth[i][j + 1] + old[i][j];
					birth[i + 1][j - 1] = birth[i + 1][j - 1] + old[i][j];
					birth[i + 1][j] = birth[i + 1][j] + old[i][j];
					birth[i + 1][j + 1] = birth[i + 1][j + 1] + old[i][j];
				}
			}
	}
	for (i = 0;i < 9;i++)
	{
		for (j = 0;j < 9;j++)
			printf("%d ", birth[i][j]);
		printf("\n");
	}
	return 0;
}

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Qt TCP實(shí)現(xiàn)簡(jiǎn)單通信功能

    Qt TCP實(shí)現(xiàn)簡(jiǎn)單通信功能

    這篇文章主要為大家詳細(xì)介紹了Qt TCP實(shí)現(xiàn)簡(jiǎn)單通信功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • c語(yǔ)言冒泡排序法代碼

    c語(yǔ)言冒泡排序法代碼

    c語(yǔ)言冒泡排序法代碼,這個(gè)是大家最早接觸的算法吧,總在寫(xiě) 總在錯(cuò),學(xué)習(xí)就是這么個(gè)過(guò)程, 溫故才知新, 望自己謹(jǐn)記
    2013-02-02
  • C++ accumulate函數(shù)詳細(xì)介紹和具體案例

    C++ accumulate函數(shù)詳細(xì)介紹和具體案例

    這篇文章主要介紹了C++ accumulate函數(shù)詳細(xì)介紹和具體案例,accumulate是numeric庫(kù)中的一個(gè)函數(shù),主要用來(lái)對(duì)指定范圍內(nèi)元素求和,但也自行指定一些其他操作,如范圍內(nèi)所有元素相乘、相除等
    2022-08-08
  • Linux?C/C++?timeout命令實(shí)現(xiàn)運(yùn)行具有時(shí)間限制功能

    Linux?C/C++?timeout命令實(shí)現(xiàn)運(yùn)行具有時(shí)間限制功能

    inux?timeout命令的一個(gè)屬性是時(shí)間限制??梢詾槿魏蚊钤O(shè)置時(shí)間限制。如果時(shí)間到期,命令將停止執(zhí)行,這篇文章主要介紹了Linux?C/C++?timeout命令實(shí)現(xiàn)(運(yùn)行具有時(shí)間限制),需要的朋友可以參考下
    2023-02-02
  • C語(yǔ)言動(dòng)態(tài)規(guī)劃之背包問(wèn)題詳解

    C語(yǔ)言動(dòng)態(tài)規(guī)劃之背包問(wèn)題詳解

    這篇文章主要介紹了C語(yǔ)言動(dòng)態(tài)規(guī)劃之背包問(wèn)題詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C語(yǔ)言中指針的加減運(yùn)算方法示例

    C語(yǔ)言中指針的加減運(yùn)算方法示例

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中指針的加減運(yùn)算的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • C++深入淺出講解希爾排序算法的實(shí)現(xiàn)

    C++深入淺出講解希爾排序算法的實(shí)現(xiàn)

    希爾排序是希爾(Donald Shell)于1959年提出的一種排序算法。希爾排序也是一種插入排序,它是簡(jiǎn)單插入排序經(jīng)過(guò)改進(jìn)之后的一個(gè)更高效的版本,也稱(chēng)為縮小增量排序,同時(shí)該算法是沖破O(n2)的第一批算法之一。本文會(huì)以圖解的方式詳細(xì)介紹希爾排序的基本思想及其代碼實(shí)現(xiàn)
    2022-05-05
  • C語(yǔ)言二叉樹(shù)層序遍歷

    C語(yǔ)言二叉樹(shù)層序遍歷

    這篇文章主要介紹了C語(yǔ)言二叉樹(shù)層序遍歷,文章基于C語(yǔ)言的相關(guān)資料展開(kāi)詳細(xì)的文章內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-04-04
  • 淺談C++中char型變量的地址輸出

    淺談C++中char型變量的地址輸出

    下面小編就為大家?guī)?lái)一篇淺談C++中char 型變量的地址輸出。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • C語(yǔ)言 結(jié)構(gòu)體數(shù)組詳解及示例代碼

    C語(yǔ)言 結(jié)構(gòu)體數(shù)組詳解及示例代碼

    本文主要介紹C語(yǔ)言 結(jié)構(gòu)體數(shù)組,這里整理了相關(guān)資料及簡(jiǎn)單示例代碼,以便大家學(xué)習(xí)參考,有興趣的小伙伴可以看下
    2016-08-08

最新評(píng)論