母牛的故事

// 算法:母牛的故事
// 刚生下的奶牛计为0岁,2岁过完,到3岁开始生小牛。
// 用4个元素的数组存放母牛的数量。第0,1,2三个元素存放0-2岁的奶牛数量,
// 第3个元素存放4岁及以上的奶牛(可生育)数量。循环指定的年数,
// 每年处理增加奶牛的年龄及刚出生奶牛的数量。
#include <stdio.h>
int main()
{
    int nCow[4], i, nBorn, nYears[60] = { 1, };
    for ( i = 0; i < 60 && nYears[ i - 1 ] != 0; ++i )
        scanf( "%d", &nYears[i] );    // 批量输出
    for ( i = 0; nYears[i] != 0; ++i )
    {    // 批量计算每个输入的年数
        for ( nCow[0] = nCow[1] = nCow[2] = 0, nCow[3] = 1;
            nYears[i] > 1; --nYears[i] )
        {    // 循环指定的年数
            nCow[3] += nCow[2];    // 将2岁过完的奶牛加入生育组
            nBorn = nCow[3];    // 计算这一年生育的奶牛数
            nCow[2] = nCow[1];    // 1岁组数量存入2岁组
            nCow[1] = nCow[0];    // 0岁组数量存入1岁组
            nCow[0] = nBorn;    // 新出生的小牛
        }    // 下面打印输出
        printf( "%d\n", nCow[0] + nCow[1] + nCow[2] + nCow[3] );
    }
    return 0;
}

 

#include <stdio.h>
int main()
{
    int i,n,a[100];
    while(scanf("%d",&n)!=EOF)
    {
        a[1]=1;a[2]=2;a[3]=3;
        for(i=4;i<=n;i++)
            a[i]=a[i-1]+a[i-3];
        if(n==0)
            break;
        printf("%d\n",a[n]);
    }
    return 0;
}

 

posted @ 2012-10-14 23:28  学-无止境  阅读(99)  评论(0)    收藏  举报