母牛产牛问题

http://topic.csdn.net/u/20120828/12/8336bd43-4a3c-4b77-bf17-2fa854c3702e.html

一头母牛从出生后,每两年可以生下一头母牛,即在第二年和第四年分别可产下一头母牛,出生后第五年将会死去。假设农场现有一头母牛,N年后农场的母牛数目是多少,编写程序实现

用五个数字或数组来记录当前岁数的牛的个数,每增长一年的时候都会年长一岁的个数变为上次小一岁的个数,即x4=x3  x3=x2 x2=x1  x1=x0  x0=x2+x4,因为0岁的是上一次1岁和三岁的牛产生的,此时已经分别成长为了2岁和4岁的所以又x0=x2+x4,程序实现如下

#include <iostream>
using namespace std;

int cow(int year)
{
    int v[] = {1,0,0,0,0,0};
    for (int i = 0; i < year; ++i)
    {
        // 每?循-环¡¤一°?次ä? 长¡è一°?岁¨º
        v[5] += v[4];//死¨¤掉Ì?的Ì?牛¡ê呀? 可¨¦怜¢¡¥
        v[4] = v[3];
        v[3] = v[2];
        v[2] = v[1];
        v[1] = v[0];
        v[0] = v[2] +v[4]; //新?牛¡ê上¦?架¨¹ 
    }
    int sum = 0;
    for(int j = 0 ; j < 5; ++j)
    {
        sum += v[j];
    }
    return sum;
}

int main()
{
    int year;
    while (cin >> year)
    {
        cout << cow(year) <<endl;
    }
	system("pause");
    return 0;
}

#include <iostream>
using namespace std;

int GetCowNum(int N)
{
    int x0 = 1;
    int x1 = 0;
    int x2 = 0;
    int x3 = 0;
    int x4 = 0;
    for(int i = 1; i <= N; i++)
    {
        int newCal = x1+x3;
        x4 = x3;
        x3 = x2;
        x2 = x1;
        x1 = x0;
        x0 = newCal;
    }
    return x0+x1+x2+x3+x4;
}

void main()
{
    cout<< GetCowNum(4) <<endl;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值