母牛产牛问题

来源:互联网 发布:剑三正太数据令 编辑:程序博客网 时间:2024/04/29 04:15

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;}