#include<stdio.h>
int main()
{
int age[4]={0,0,0,1};
int y,c;
printf("input years");
scanf("%d",&y);
for(c=0;c<y;c++)
{
age[3] = age[3]+age[2];
age[2] = age[1];
age[1] = age[0];
age[0] = age[3];
}
printf("%d",age[0]+age[1]+age[2]+age[3]);
return 0;
}
题目是啥,是否有测试数据?
这样写:
#include<stdio.h>
int main(void){
int i,year,oxnum,oxnum1,oxnum2,oxnum3;
printf("请输入年数:");
scanf("%d",&year);
for(int i=1;i<=year;i++){
if(i<4){
oxnum = oxnum1 = oxnum2 = oxnum3 = 1;
}
else{
oxnum = oxnum1 + oxnum3;
oxnum3 = oxnum2;
oxnum2 = oxnum1;
oxnum1 = oxnum;
}
printf("i =%2d->oxnumber =%3d \n",i,oxnum);
}
return 0;
}
本题是递推类型的题,跟典型的斐波那契数列等很像:
第一年 s1 = 1
第二年 s2 = 1
第三年 s3 = 1
从第四年开始,每年的母牛头数为:上一年 + 前第3年(前第3年的每一头都可以生仔了)
第四年 s4 = s3+s1 = 1+1 = 2
第五年 s5 = s4+s2 = 2+1 = 3
......
第n年 s(n) = s(n)+s(n-3)
综上,可推出第 N 年奶牛的数量的递推公式为:S(N) = S(N-1) + S(N-3)
可编程如下:
#include <iostream>
using namespace std;
int cowNum(int N)
{
if (N == 1 || N == 2 || N == 3)
{
return 1;
}
else
{
return cowNum(N - 1) + cowNum(N - 3);
}
}
int main()
{
cout << "你想知道多少年后奶牛的个数?";
int year;
cin >> year;
cout << year << "年后奶牛的个数为:" << cowNum(year) << endl;
return 0;
}
如有帮助,还请采纳!谢谢!