题目大意:
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
解题思路:
找出递推公式。假如当年为第n个年头,那么f[n] = f[n-1] + f[n-3].当前年等于去年的牛+3年前的牛,把去年的牛都当成不会生的,把3年前的牛都当成会生的即可。可画表:
4
4 1
4 2 1
4 3 2 1
4 4 3 2 1 1
4 4 4 3 2 2 1 1 1
代码:
#include
using namespace std;
const int MAX = 55;
int main(void)
{
__int64 f[55];
f[1] = 1;
f[2] = 2;
f[3] = 3;
f[4] = 4;
for(int i = 5; i < MAX; i++)
f[i] = f[i-1] + f[i-3];
int n;
while(scanf("%d", &n), n)
{
printf("%d\n", f[n]);
}
return 0;
}