题目描述 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在 第n年的时候,共有多少头母牛? 输入 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。 n=0表示输入数据的结束,不做处理。 输出 对于每个测试实例,输出在第n年的时候母牛的数量。 每个输出占一行。 样例输入 2 4 5 0 样例输出 2 4 6
分析:
周期问题,小母牛第四年才生小母牛,周期为4,递归超时的话使用备忘录
//奶牛问题 放置时间超限 #include<iostream> #include<cstring> using namespace std; int book[100]; int gcd(int n){ if(book[n]) return book[n]; if(n<=3) { book[n]=n; return n; } else{ book[n]=gcd(n-1)+gcd(n-3); return book[n]; } } int main() { memset(book,0,sizeof(book)); int n; //for(int i=1;i<=50;i++) cout<<gcd(i)<<endl; while(cin>>n&&n){ cout<<gcd(n)<<endl; // cout<<endl; } }