我这儿有了两种方法,无论使用哪种方法你都要抓住当年母牛生下的小牛与几年前的母牛数(也就是当年的成熟牛)是相等的这个规律,数组法会受到题目所给出的年数的局限,比较浪费空间,递推法的则更需要理解内部的规律。
数组法
#include<stdio.h>
int main(){
int n,count=0;
int i;
while(scanf("%d",&n)&&n)
{
int a[56];
for(i=1;i<56;i++)
{
if(i<=4)
a[i]=i;
else
a[i]=a[i-1]+a[i-3];
}
printf("%d\n",a[n]);
}
return 0;
}
递推法
#include <stdio.h>
int main()
{
int n,i;
while(scanf("%d",&n)&&n)
{
int num[3]={1,2,3};
for(i=1;i<n/3.0;i++)
{
num[0]+=num[2];
num[1]+=num[0];
num[2]+=num[1];
}
printf("%d\n",num[(n-1)%3]);
}
return 0;
}
0.0分
1 人评分
这个递推法牛逼了 1 2 3 4 6 9 13 19 28 41 60 88 for循环中用隐式类型转换控制住了循环叠加1次 使用取余完美取出数字,不占用太多额外空间
for(i=1;i<n/3.0;i++) 中的 i<n/3.0 是什么意思?
矩形面积交 (Java代码)浏览:1170 |
九宫重排 (C++代码)浏览:1301 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:878 |
求圆的面积 (C语言代码)浏览:1050 |
C二级辅导-阶乘数列 (C语言代码)浏览:675 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:579 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:506 |
简单的a+b (C语言代码)浏览:504 |
淘淘的名单 (C语言代码)浏览:1180 |
C语言程序设计教程(第三版)课后习题12.1 (C语言代码)浏览:620 |