我这儿有了两种方法,无论使用哪种方法你都要抓住当年母牛生下的小牛与几年前的母牛数(也就是当年的成熟牛)是相等的这个规律,数组法会受到题目所给出的年数的局限,比较浪费空间,递推法的则更需要理解内部的规律。
数组法
#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 是什么意思?
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:643 |
点我有惊喜!你懂得!浏览:1166 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1914 |
钟神赛车 (C++代码)浏览:905 |
十->二进制转换 (C语言代码)浏览:1330 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:943 |
Hello, world! (C++代码)浏览:1778 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:388 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:561 |
矩形面积交 (C++代码)浏览:1204 |