[编程题]统计每个月兔子的总数(思路很简单)

统计每个月兔子的总数

http://www.nowcoder.com/questionTerminal/1221ec77125d4370833fd3ad5ba72395

本来想用递归算法,但本人不太擅长递归编程,所以总结出简单的逻辑规律,用简单的方式循环迭代。附python代码,以下文字为变量的含义,具体思路看代码
归纳:所有兔子就三种,每个月更新三种的数量,迭代完全部相加即为所有兔子数量
k3-第三个月及以上,可生育
k2-第二个月,不可生育
k1-第一个月,小萌新

import sys
for s in sys.stdin:
    m = int(s)
    k3 = 0
    k2 = 0
    k1 = 0
    for i in range(m):
        k3 = k3 + k2
        k2 = k1
        if k3==0 and k2 == 0:
            k1 = 1
        elif k3==0 and k2 == 1:
            k1 = 0
        else:
            k1 = k3

    print(k1+k2+k3)
全部评论
代码还能提炼再精简,比如内层的if和elif可以提到for外面,这样就不用每次for循环都要走判断,但本人懒所以就这样吧反正程序能测试通过
2 回复 分享
发布于 2020-06-08 13:32
import sys for line in sys.stdin: m = int(line) t1 = 1 t2 = 0 t3 = 0 for i in range(m-1): t2,t3 = t1,t2+t3 t1 = t3 print(t1+t2+t3) 借鉴了答主的思路,十分感谢!
2 回复 分享
发布于 2021-07-23 12:27
妙呀
1 回复 分享
发布于 2020-06-16 14:51
萌新求解答,刚出生的兔子不应该是0月龄吗
1 回复 分享
发布于 2021-03-22 15:03
请问为什么要有这个判断? if k3==0 and k2 == 0: k1 = 1 elif k3==0 and k2 == 1: k1 = 0
点赞 回复 分享
发布于 2021-08-07 15:15
这个思路确实不错
点赞 回复 分享
发布于 2021-09-09 16:55
妙啊
点赞 回复 分享
发布于 2021-11-21 21:46
这个思路好,简单明了,学习了!!!
点赞 回复 分享
发布于 2023-05-08 12:04 陕西
我写一下递归解法吧 首先动态规划总结出公式 f(i) = f(i - 1) + f( i - 2) i >= 2 写递归: public static int js(int n){ if(n < 3){ return 1; } return js(n - 1) + js(n - 2); }
点赞 回复 分享
发布于 2023-08-29 15:00 湖北

相关推荐

hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
130 10 评论
分享
牛客网
牛客企业服务