//简单的模拟了全部的过程,比较好理解,但略显繁琐
#include<iostream>
#define YEAR 55
using namespace std;
int main()
{
int n;
int ans[YEAR]={0},first_cow=0,double_cow=0,triple_cow=0,quadra_cow=1;
ans[1]=1;//第一年只有一头
for(int i=2;i<YEAR;i++){
quadra_cow += triple_cow;
ans[i] = ans[i-1] + quadra_cow;
triple_cow = double_cow;
double_cow = first_cow;//实际上triple_cow=first_cow
first_cow = quadra_cow;
}
while( cin >> n, n != 0){
cout<<ans[n]<<endl;
}
return 0;
}
//受第一种方法的启发,可以直接列出状态转移方程
#include<iostream>
#define YEAR 55
using namespace std;
int main()
{
int n;
int ans[YEAR]={0,1,2,3,4};//初始化前四年
for(int i=5;i<YEAR;i++){
ans[i]=ans[i-1]+ans[i-3];//三年前的牛到第四年都可以生小牛
}
while( cin >> n, n != 0){
cout<<ans[n]<<endl;
}
return 0;
}
//简单的模拟了全部的过程,比较好理解,但略显繁琐#include#define YEAR 55using namespace std;int main(){ int n; int ans[YEAR]={0},first_cow=0,double_cow=0,triple_cow=0,quadra_cow=1; ans[1]=1;//第一年只有一头 fo