题目描述
在T=1 时刻有一个细胞,每个时刻细胞分裂一次,在T=2 时刻细胞个数变为2个,但是细胞的生命周期为3,求在T=n时刻细胞的数量有多少?
题解思路
在T = 0 时刻细胞数量为C0 = 1,由题目可以知道:
T=1, C1 = 2 * C0 = 2
T=2, C2 = 2 * C1 = 4
T=3, C3 = 2 * C2 = 8, 由于细胞生命周期为3,则T=1时刻细胞就不存在了,则C3 = 2 * C2 - C0
依次类推:Cn = 2*Cn-1 - Cn-3
可以使用动态规划解决改问题。
Python编码实现
def cellSplit(n):
# dp[n]: 表示n时刻细胞状态总数
dp = [0 for _ in range(n+1)]
dp[0] = 1
for i in range(1, n+1):
if n >= 3:
dp[i] = 2 * dp[i-1] - dp[i-3]
else:
dp[i] = 2 * dp[i-1]
return dp[-1]
print(cellSplit(3))