有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?要求输入1个年份并输出对应母牛数量。
示例1
输入:4
输出:4
示例2
输入:5
输出:6
这是一道需要借助递推解决的题
递推公式:f(1)=f(2)=f(3)=1,f(n)=f(n-1)+f(n-3)(n>=4)
实现代码可供题主参考:
#include<stdio.h>
int main()
{
int f[50],i,n;
scanf("%d",&n);
f[1]=1;f[2]=2;f[3]=3;
for(i=4; i<=n;i++){
f[i]=f[i-3]+f[i-1];
}
printf("%d\n",f[n]);
return 0;
}
运行结果:
题目出得不严谨,计算母牛数目是按年初之前算,还是按过了年初算?给出的示例也是相互矛盾。
#include <stdio.h>
int main()
{
int n;
int a[5] = {};
scanf("%d", &n);
a[4] = 1;
for (int i = 0; i < n; i++) // 如果按过了年初来计算,i=0
{ // 如果按没过年初来计算,i=1
int b = a[4];
a[4] += a[3];
a[3] = a[2];
a[2] = a[1];
a[1] = a[0];
a[0] = b;
}
printf("%d", a[0] + a[1] + a[2] + a[3] + a[4]);
return 0;
}