在邊長為9的正方形培養皿中,正中心位置有m個細菌。假設細菌的壽命僅一天,但每天可繁殖10個後代,而且這10個後代,有兩個分布在原來的單元格中,其餘的均勻分布在其四周相鄰的八個單元格中。求經過n(1≤n≤4)天後,細菌在培養皿中的分布情況。
輸入為兩個整數,第乙個整數m表示中心位置細菌的個數(2 ≤ m ≤ 30),第二個整數n表示經過的天數(1 ≤ n ≤ 4)。
輸出九行九列整數矩陣,每行的整數之間用空格分隔。整個矩陣代表n天後細菌在培養皿上的分布情況。
2 10 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 ,再加上剛繁殖的細菌。所以我的想法是用兩個列表,乙個記錄前一天培養皿的狀態,乙個恒為零,是用來加上剛繁殖的細菌輸出答案的。
然後分析細菌的繁殖與分布位置。我們發現新繁殖的細菌分布在以原先細菌為中心的 3*3 的格仔中。根據題目的描述,如果設原先細菌的數量為 count ,那麼此時的**應為:
[count count count]
[count 2*count count]
[count count count]
因為繁殖一次後有兩個分布在原來的單元格,所以繁殖一次後原先的單元裡有的細菌數量有 2*count 個。
box =[[
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,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
,0,]
,[0,
0,0,
0,0,
0,0,
0,0,
],[0
,0,0
,0,0
,0,0
,0,0
,]]box1 = box
num, days =
map(
int,
input()
.split())
box1[4]
[4]= num
# step 記錄細菌所在的位置
step =[[
4,4]
]while days >0:
box =[[
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,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
,0,]
,[0,
0,0,
0,0,
0,0,
0,0,
],[0
,0,0
,0,0
,0,0
,0,0
,]]for j, i in step:
count = box1[j]
[i] box[j]
[i]+=
2* count
# 原先細菌周圍的八個位置細菌數量都增加 count 個
for new_x, new_y in
[[j-
1, i-1]
,[j-
1, i]
,[j-
1, i+1]
,[j, i-1]
,[j, i+1]
,[j+
1, i-1]
,[j+
1, i]
,[j+
1, i+1]
]:box[new_x]
[new_y]
+= count
# 用 list1 作為過渡的列表,避免下面的迴圈無法退出
list1 =
for j, i in step:
for new_x, new_y in
[[j-
1, i-1]
,[j-
1, i]
,[j-
1, i+1]
,[j, i-1]
,[j, i+1]
,[j+
1, i-1]
,[j+
1, i]
,[j+
1, i+1]
]:# if 語句避免將重複的位置加入列表
if[new_x, new_y]
notin list1 and
[new_x, new_y]
notin step:
[new_x, new_y]
)for i in list1:
box1 = box
days -=
1for i in box:
s =""for j in i:
s +=
str(j)
+" "
print
(s.rstrip(
))
細菌的繁殖與擴散
描述 在邊長為9的正方形培養皿中,正中心位置有m個細菌。假設細菌的壽命僅一天,但每天可繁殖10個後代,而且這10個後代,有兩個分布在原來的單元格中,其餘的均勻分布在其四周相鄰的八個單元格中。求經過n 1 n 4 天後,細菌在培養皿中的分布情況。輸入輸入為兩個整數,第乙個整數m表示中心位置細菌的個數 ...
細菌的繁殖與擴散 求助
在邊長為9的正方形培養皿中,正中心位置有m個細菌。假設細菌的壽命僅一天,但每天可繁殖10個後代,而且這10個後代,有兩個分布在原來的單元格中,其餘的均勻分布在其四周相鄰的八個單元格中。求經過n天後,細菌在培養皿中的分布情況。輸出九行九列整數矩陣,每行的整數之間用空格分隔。整個矩陣代表n天後細菌在培養...
陣列與多維陣列的定義與使用
簡述 陣列是可以用於儲存多個相同型別的資料。陣列的定義分三步 建立物件 分配空間 賦值定義 int a 僅定義乙個陣列物件a。a newint 5 int b newint 5 5代表該陣列的長度 int c 在建立物件時就賦值,可以new int,因為數值時系統會自動根據數值長度分配空間使用 陣列...