我这儿有了两种方法,无论使用哪种方法你都要抓住当年母牛生下的小牛与几年前的母牛数(也就是当年的成熟牛)是相等的这个规律,数组法会受到题目所给出的年数的局限,比较浪费空间,递推法的则更需要理解内部的规律。
数组法
#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语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:667 |
A+B for Input-Output Practice (C语言代码)浏览:458 |
1054题解浏览:460 |
简单的a+b (C语言代码)浏览:524 |
母牛的故事 (C语言代码)浏览:559 |
C语言训练-排序问题<1> (C语言代码)浏览:355 |
买不到的数目 (C语言代码)浏览:3087 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:604 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:728 |
求教大神。。。。1063,统计字符。浏览:11680 |