我这儿有了两种方法,无论使用哪种方法你都要抓住当年母牛生下的小牛与几年前的母牛数(也就是当年的成熟牛)是相等的这个规律,数组法会受到题目所给出的年数的局限,比较浪费空间,递推法的则更需要理解内部的规律。
数组法
#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 是什么意思?
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:1509 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:596 |
字符串输入输出函数 (Java代码)浏览:1489 |
C语言训练-最大数问题 (C语言代码)浏览:648 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:541 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:653 |
1013题解浏览:596 |
简单的a+b (C语言代码)浏览:527 |
DNA (C语言代码)浏览:438 |
罗列完美数 (C语言代码)浏览:516 |