有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
n=0表示输入数据的结束,不做处理。
每个输出占一行。
2 4 5 0
2 46
题目分析:也可以说是找规律,但是很明显有dp的思想渗透在里面。
下一年的母牛总数是下一年可以生产的母牛总数再加上当前这一年的母牛总数。所以就是
a[i]=a[i-1]+a[i-3];恩,就是这样。
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> using namespace std; int main(){ int n,m; int k; long long a[60]; a[1]=1; a[2]=2; a[3]=3; a[4]=4; a[5]=6; for(int i=5;i<=60;i++) a[i]=a[i-1]+a[i-3]; while((scanf("%d",&n))!=EOF){ if(n==0) break; printf("%I64d\n",a[n]); } return 0; }