题目链接:
https://www.dotcpp.com/oj/problem1004.html
题目大意:
思路:
我们可以根据题目提供的信息大概地列出前9项:
年份:1 2 3 4 5 6 7 8 9
母牛:1 2 3 4 6 9 13 19 28
通过观察我们可以发现:
前四年都是增加一只的,而到了大于四年之后,
第五年:6 = 4+2
第六年:9 = 6+3
第七年:13 = 9+4
第八年:19 = 13 + 6
第九年:28 = 19 + 9
所以可以推测出:递归式:f[i] = f[i-1]+f[f-3](当i>4时)
ac代码:
#include<cstdio>
#include<iostream>
using namespace std;
int f[60];//记录可以生育的母牛数量
int main(){
f[1] = 1;
// f[2] = 2;
// f[3] = 3;
// f[4] = 4;
for(int i = 2;i < 56;i++){
if(i<=4){
f[i] = f[i-1] + 1;
}else{
f[i] = f[i-1] + f[i-3];
}
}
int n;
while(~scanf("%d",&n)){
if(n==0) break;
printf("%d\n",f[n]);
}
return 0;
}