LittleCoke


私信TA

用户名:dotcpp0727716

访问量:66

签 名:

等  级
排  名 17838
经  验 762
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 湖南大学
专  业

  自我简介:

TA的其他文章

解题思路:

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分

2 人评分

  评论区

  • «
  • »