【Python】母牛问题
Python 3.6.7
母牛问题
题目描述:有一头母牛,它每年年初生一头小母牛。
每头小母牛从第 4 个年头开始,每年年初也生一头小母牛。(别问我公牛上哪去了……)
请编程实现计算在第 n 年的时候,共有多少头母牛?
输入:年份 n
输出:母牛的数量
示例:
第 1 年有 1 头母牛
第 2 年有 2 头母牛
第 3 年有 3 头母牛
第 4 年有 4 头母牛
第 5 年有 6 头母牛
第 6 年有 9 头母牛
第 7 年有 13 头母牛
第 8 年有 19 头母牛
第 9 年有 28 头母牛
def cow1(n):"""循环计算big表示成熟母牛,small表示小母牛小母牛经过三年(从列表里走过3个位置)就变成成熟母牛成熟母牛有多少只当年就会新生多少小母牛(放在small最后)"""big, small = 0, [0, 1, 0]for _ in range(n):big += small.pop(0)small.append(big)return big + sum(small)def cow21(n):"""递归牛群总数 = 去年总数 + 今年新生儿数量今年新生儿数量 = 今年的成熟母牛数量今年的成熟母牛数量 = 3年前牛群总数"""return cow21(n - 1) + cow21(n - 3) if n > 1 else 1def cow22(n, cache=None):"""递归增加cache减少递归次数"""if cache is None:cache = {1: 1, 0: 1, -1: 1}if n in cache:return cache[n]cache[n - 1] = cow22(n - 1, cache)cache[n - 3] = cow22(n - 3, cache)return cache[n - 1] + cache[n - 3]class cow3:"""牛类每只牛只需关心这些年自己生了多少牛即可家庭成员数量 = 子女家庭成员数量 + 自己"""def __init__(self, n, mom=None):self.age = n + 2 if mom is None else nself.children = [cow3(i + 1, self)for i in range(max(self.age - 3, 0))]@propertydef family_num(self):return sum(c.family_num for c in self.children) + 1# 验证
for i in range(1, 10):print('Year:', i, 'Num:', cow1(i), cow21(i), cow22(i), cow3(i).family_num)
结果
# Year: 1 Num: 1 1 1 1
# Year: 2 Num: 2 2 2 2
# Year: 3 Num: 3 3 3 3
# Year: 4 Num: 4 4 4 4
# Year: 5 Num: 6 6 6 6
# Year: 6 Num: 9 9 9 9
# Year: 7 Num: 13 13 13 13
# Year: 8 Num: 19 19 19 19
# Year: 9 Num: 28 28 28 28
【Python】母牛问题相关推荐
- 母牛python_使用Python解决母牛问题
我看一个用python写的都没有,那我来分享一下 | 第n年 | 总母牛数 | | :------------ | :------------ | | 1 | 1 | | 2 | 2 | | 3 | ...
- 母牛python_母牛的故事-题解(Python代码)
解题思路: 公式: x[n]=x[n-1]+x[n-3] n #当前年份 x[n] #当前年份的小母牛 x[]=[1,2,3,4] #初始化的数据 ...
- 母牛python_《Python》 母牛的故事Hello, world用筛法求之N内的素数
1:题目: 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? def f(n): f1,f2,f3=1,2,3 if ...
- PYTHON练习题---设有一头小母牛,从出生第四年起每年生一头小母牛
母牛生小牛 描述 设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛? 输入 输入一个整数N 输出 第N年时母牛的数量 输入样例 1 5 输出样例 1 3 解决思路:递推法 ...
- 母牛生小牛问题递归python实现
#File Name : 母牛问题.py # 开始有一只母牛 母牛每年可以生一只母牛 # 新出生三年后才能每年生一只母牛 假设都不会死 # 第n年有几只def cowNum(N):if N<=1 ...
- Python 单词翻译:中英文翻译模块
简 介: 测试了 中英文翻译模块中的中英文翻译模块的功能.这个模块每天只提供有限的英文单词翻译功能. 关键词: 中英文翻译# #mermaid-svg-VLV67DrDfCYjIugK {font-f ...
- 题目 1004: [递归]母牛的故事
题目 1004: [递归]母牛的故事 idea 1 2 3 4 6 9 13 第4年母牛的数量=第1年母牛的数量+第3年母牛的数量 第5年母牛的数量=第2年母牛的数量+第4年母牛的数量 第6年母牛的数 ...
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- 有趣的Python Challenge编程解谜游戏攻略二(5-9关)
**有趣的Python Challenge编程解谜游戏攻略二(5-9关)** 介绍 游戏介绍 0-4关攻略 写在前面 关卡 第5关 第6关 第7关 第8关 第9关 链接总结 第10关预告 介绍 游戏介 ...
最新文章
- C# static的用法详解
- oracle 操作表
- 2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
- 华为ipd产品开发流程_华为集成产品开发(IPD)流程的解读
- hpcc_使用Java将数据流式传输到HPCC
- springside 参考地址
- 容器编排技术 -- kubectl Cheat Sheet
- do sb suggest to_suggest sb to do还是doing
- [译] Commit 提交指南
- Lost Cows POJ 2182 思维+巧法
- 网页设计与制作项目教程HTML+CSS+JavaScript之项目三 flower shop
- python列表遍历元组_Python 元组遍历排序操作方法
- 关于写作,别那么在意别人的看法,开始干吧
- 端智能助力西瓜视频业务实践
- 守护进程 - Supervisor的使用
- java怎么无参构造方法_Java中如何在无参构造方法中调用有参构造?
- 情侣积分微信小程序零基础开发教程(附代码及开发指南)
- 郑州大学“战疫杯”大学生程序设计在线邀请赛(2)(C++题解+详细思路)2022年5月10日
- 最新支持的各个版本Visual C ++ 2017 2015 2013 2010 2008等版本下载
- 恰如春花秋月人生起伏