我这儿有了两种方法,无论使用哪种方法你都要抓住当年母牛生下的小牛与几年前的母牛数(也就是当年的成熟牛)是相等的这个规律,数组法会受到题目所给出的年数的局限,比较浪费空间,递推法的则更需要理解内部的规律。
数组法
#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++代码)浏览:646 |
【偶数求和】 (C++代码)浏览:694 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C++代码)(手动优化一下计算)浏览:1250 |
数列排序 (C语言代码)浏览:820 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:628 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:540 |
用筛法求之N内的素数。 (C语言代码)浏览:631 |
WU-C语言程序设计教程(第三版)课后习题12.1 (C++代码)浏览:908 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:658 |
水仙花 (C语言代码)浏览:1000 |