解题思路:

while True + break解决多行输入问题,列表存储解决超时问题,my_list[ ]存储每一年的母牛数


注意事项:

    当且仅当n>before_max(历史最大输入)时,才允许更新my_list[ ]和before_max

    如果当前输入比之前的还小,就不必更新my_list[ ]而直接调用即可


举例:

    第一次输入n = 7          my_list=[1,2,3,4,6,9,13]    before_max=7

    第二次输入n = 6 小于before_max,不必更新my_list,直接调用my_list[5]即可,

    第三次输入n = 8 大于before_max,接着上一次更新my_list=[1,2,3,4,6,9,13,19]  before_max=8


参考代码:

my_list = [1,2,3]  #前三年母牛数
before_max = 3  #默认最大历史输入为3
while True:
    n = int(input())
    if n == 0:
        break  #如果输入0则退出运行,否则将不断循环
    else:
        if n > before_max:  #如果当前输入最大,则更新my_list,否则不更新
            for i in range(before_max,n):  #接着上次继续更新my_list
                my_list.append(my_list[i-1]+my_list[i-3])
            before_max = n  #在n>befora_max的前提下,更新before_max
        print(my_list[n-1]) #my_list[n-1]即为第n年的母牛数


点赞(0)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论