亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用C語言實現細菌的繁殖與擴散

發布時間:2021-11-02 13:52:17 來源:億速云 閱讀:301 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關怎么使用C語言實現細菌的繁殖與擴散,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

    一.引言

    這是我在csdn寫的第一篇文章~作為一個初學C的萌新,昨天碰到一道關于細菌繁殖與擴散的題目,覺得很有意思,想了一個晚上,終于想到了解法?

    二.題目

    詳情細菌的繁殖與擴散

    總時間限制: 1000ms 內存限制: 65536kB

    描述:

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

    輸入:

    輸入為兩個整數,第一個整數m表示中心位置細菌的個數(2 ≤ m ≤ 30),第二個整數n表示經過的天數(1 ≤ n ≤ 4)。

    輸出:

    輸出九行九列整數矩陣,每行的整數之間用空格分隔。整個矩陣代表n天后細菌在培養皿上的分布情況。

    樣例輸入

    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

    三.思路以及代碼

    思路

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

    首先,在原位置上的每一個細菌都可以生兩個崽兒在原先的位置,并且在周圍的八個格子中各留下一個新生兒?然后不幸凋亡……

    這樣,我們先把上一天的數據保存在舊數據矩陣中,然后把上一天每個數據都乘以二放到新數據的矩陣中(0*2=0所以不用管),這是第一次循環。然后再進行一次循環,判斷如果舊數據矩陣的某一個位置的數據不為零,就在新數據矩陣對應位置的周圍八個格子都加上該數據,這一步就相當于細菌在周圍單元格中的擴散。這樣我們就完成了遞推過程。

    注意哦,這個遞歸只能進行四天(循環四次),要不然可能出現堆棧錯誤……

    代碼

    #include<stdio.h>
    int main()
    {
    	int old[9][9], birth[9][9];//舊的培養基和新的培養基,用于遞推
    	int m, n;//初始中央細菌數以及遞推的天數
    	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;//中央細菌已經長出
    	for (p = 1;p <= n;p++)//開始遞推
    	{
    		for (i = 0;i < 9;i++)
    			for (j = 0;j < 9;j++)
    			{
    				old[i][j] = birth[i][j];//舊培養基相當于一個儲存容器,儲存上一天的培養基情況
    				birth[i][j] = 2 * birth[i][j];//每個位置上的每個舊細菌生兩個崽,然后凋亡
    			}
    		for (i = 0;i < 9;i++)
    			for (j = 0;j < 9;j++)
    			{
    				if (old[i][j] != 0)//如果舊培養基上某個位置有細菌,就在新培養基上它的周圍生出一圈崽兒(記得每個細菌各生一圈兒……)
    				{
    					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;
    }

    關于“怎么使用C語言實現細菌的繁殖與擴散”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    深水埗区| 南郑县| 玛纳斯县| 华安县| 翁牛特旗| 秦皇岛市| 玉山县| 海兴县| 化州市| 交城县| 平罗县| 太和县| 萨嘎县| 怀仁县| 潮安县| 建昌县| 新乡市| 宁南县| 山西省| 大洼县| 鸡泽县| 南涧| 鸡西市| 崇仁县| 邹平县| 宝丰县| 龙岩市| 通化市| 萨迦县| 新乡县| 隆化县| 灵武市| 云浮市| 宁蒗| 日喀则市| 韶关市| 新绛县| 江津市| 永清县| 安陆市| 丁青县|