杭电OJ 2018题笔记

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2018

题目

刚开始看到这道题时我很快就联想到 Fibonacci 数列,这也确实是该兔子生崽题的变形,区别在于隔几年生崽,同样的我列了一下:                一年         两年         三年         四年         五年          六年

成年母牛          1               1               1              1              2              3

 小母牛             0               1               2              3              4              6                  

母牛总数          1               2               3              4              6               9

对于第n年母牛的总数Fn,显然等于Fn-1+Fn-3;

于是可写一个数组a[  ]来存储,并初始化前几项;

并用循环来填充到第N项的数据,最后按题目要求格式输出

我的答案:

#include "stdio.h"

void main()

{   

          intn,i;    intf[55]={1,2,3};    

         while(scanf("%d",&n)!=EOF&&0<=n&&n<55)

         {         if(n==0)break;        

                    for(i=3;i<n;i++)

                    {        f[i]=f[i-1]+f[i-3];

                    }

            printf("%d\n",f[n-1]);

         }

}

若有其他想法,或者有什么建议,望不吝赐教。

你可能感兴趣的:(杭电OJ 2018题笔记)