解题思路:
写出每年会产生的母牛数,发现第1,2,3年都是1头,然后从第三年起,第n年产生的母牛数量是第n-1年和第n-3年所产生的母牛数量和。
注意事项:
1.一开始用递归发现超时了,然后改用了用数组提前存好。
2.要注意的是第n年是前n-1年的总和。
3.算的时候记得把祖母牛加上
参考代码:
#include<iostream>
using namespace std;
int n;
int sum=0;
int main()
{
int a[55];//由题意得0<n<=54,所以开55个数组
a[1]=1;
a[2]=1;
a[3]=1;
for(int i=4;i<=54;i++)
a[i]=a[i-1]+a[i-3];//提前把每年产生的母牛数量存好
while(cin>>n)
{
sum=0;//每次输入更新sum为0,防止互相干扰
if(n==0)break;
for(int i=1;i<n;i++)//输入第n年,那么就是前n-1年的总和
sum=sum+a[i];//把每一年产生的母牛数加起来
cout<<sum+1<<endl;//此时的sum不包含祖母牛,所以要+1;
}
return 0;
}
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:748 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1294 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:931 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:470 |
用筛法求之N内的素数。 (C语言代码)浏览:645 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:520 |
1113题解浏览:784 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:534 |
蛇行矩阵 (C语言代码)浏览:498 |
格式化数据输出 (C语言代码)浏览:811 |