我看一个用python写的都没有,那我来分享一下
| 第n年 | 总母牛数 |
| :------------ | :------------ |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 6 |
| 6 | 9 |
我们从上表很容易规律,前四年好说,从第四年后(Year>4)第n年的母牛数量 = 上一年母牛数(n-1)-大前年的母牛数(n-3)。
根据此公式就很容易些写出相应的代码:
```python
#母牛的故事
list = [0]*55
list[0] = 1
list[1] = 2
list[2] = 3
list[3] = 4
while(True):
Year = eval(input())
if(Year<=0):
break
else:
if(Year<=4):
CowNum = Year
print(CowNum)
else:
for i in range(4,Year,1):
list[i] = list[i-1]+list[i-3]
print(list[Year-1])//因为从零开始
```
简单粗暴的完成
------------
但是我有一个问题想请教大家为什么我下面这段代码时间超限50% ??
问题出在哪里?还请指教。(我不想像上面那样写,但我写打下面这段代码
一直编译超时...)我不信这个邪,用perf_counter()函数粗略的计算了处理
时间,也就零点几秒。**问题出在哪呢?**
```python
#母牛的故事(时间超限50%)
import time
def CaculateCowNumber(year):
if(year<=4):
return year
else:
return CaculateCowNumber(year-1)+CaculateCowNumber(year-3)
def main():
global Year
while(Year!=None):
if(Year<=0):
break
else:
CowNum = CaculateCowNumber(Year)
print(CowNum)
Year = eval(input())
if __name__ == '__main__':
global Year
Year = eval(input())
main()
```
0.0分
1 人评分