## 算法题:母牛的故事 解析 python编程

算法题:母牛的故事 解析 python编程

题目:
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

输入
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。

输出
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。

分析:

数量
11(一只母牛)
21(母牛生的小母牛)
31(母牛生的小母牛)
41(母牛生的小母牛)
52(第一年母牛和第二年母牛生的小母牛)
63(第一、二、三生的)
74(第一、二、三、四生的)
86(第一、二、三、四、五生的)

|

总数
11
22
33
44
56
69
713
819

这道题困惑了我好久,首先我以为母牛第一年就生娃,以为计算总数就是小母牛的数量,这样算的话到第八年就会出错。年份第一年就是出生那年,我想的是出生后的一年。

代码分析:
while(True):
sum = 0 计算母牛和小母牛的总数
s = [0, ] 将母牛数量加入列表
n=int(input()) 输入年数
if(n==0): 输入0退出
break
for i in range(1,n+1): 遍历年数
if(i<=4): 小于等于四年每年只有一只母牛(第一年只有母牛,第二年才有小母牛)
m=1
s.append(m)
if(i>4): 大于四年两年前的小母牛都长成母牛(比如6年有三只小母牛是第一年、第二年、第三年生的)
t = 0 计算n的前两年母牛总数
for j in s[0:i-2]: 遍历列表从0到n的前两年的数量
t += j 再全部加起来
s.append(t)

for i in s: 最后遍历列表,将全部元素加在一起计算母牛和小母牛的总数
sum += i
print(sum)

源代码:

while(True):
    sum = 0
    s = [0, ]
    n=int(input())
    if(n==0):
        break
    for i in range(1,n+1):
        if(i<=4):
            m=1
            s.append(m)
        if(i>4):
            t = 0
            for j in s[0:i-2]:
                t += j
            s.append(t)

    for i in s:
        sum += i
    print(sum)
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值