题意:
如题,母牛四天长大,成熟的母牛每天生一胎小牛,求第N天的牛的数目。
思路:
最开始的时候想不出来递推的关系,因为每天都有小牛生出,每天都有小牛长大。但是如果把问题拆开会很好理解,第N天牛的数目a[n]等于昨天牛的数目+今天新生出牛的数目,关键在于求出今天能生出多少小牛。因为牛四天成熟,前推到n-3,三天前的所有牛到了今天都会变成成熟的状态,所以今天新生出牛的数目就等于三天前牛的总数。
即:a[n]=a[n-1]+a[n-3]
*因为题目数据弱所以这道题写法有很多
代码实现:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
const int MAX = 60;
int N;
int a[MAX]={0,1,2,3,4};
int main()
{
for( int i = 5; i < MAX; i++ ){
a[i] = a[i-1]+a[i-3];
}
while( scanf("%d",&N) != EOF ){
if( N == 0 ){
break;
}
printf("%d\n",a[N]);
}
return 0;
}