解题思路:


这道题看起来很复杂,我们首先要理清解题思路。我们可以找一找规律。如下图,当第n年时,共有a头母牛。

     第n年         1         2         3         4         5         6         7         8         9
共有a头母牛         1         2         3         4         6         9        13        19        28

看完表格,你有没有发现规律?好像没有诶!有规律吗?

规律是有的,但是只有思维活跃的大脑才能发现规律。这是需要时间的。我们要有一双善于观察,善于发现规律的眼睛。


规律:每一年(年数 > 3)母牛数量 = 前3年母牛的数量 + 前1年母牛的数量

          每一年(年数 ≤ 3)母牛的数量 = 每一年的年数


恍然大悟了吧!

既然知道规律了,那么程序就好编写了。


参考代码:


def _cow(year, n1, n2, n3):       # 需要两个函数来完成递归,必须知道前三年的母牛数

    if year == 0:                                              # 当年数等于0时,把最终结果返回

        return n3

    return _cow(year - 1, n2, n3, n1 + n3)      # 每一年(年数 > 3)母牛的数量 = 前3年母牛的数量 + 前1年母牛的数量



def cow(year):

    if year < 4:                          # 每一年(年数 ≤ 3)母牛的数量 = 每一年的年数

        return year

    else:

        return _cow(year - 3, 1, 2, 3)



def main():                             # 主函数

    years = []

    while True:

        years.append(int(input()))

        if years[len(years) - 1] == 0:

            del years[len(years) - 1]

            for year in years:

                print(cow(year))

            break



if __name__ == '__main__':

    main()

点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论