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