母牛的故事
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
有一头母牛,它每年年初生一头小母牛。每头小母牛从第 m 个年头开始,每年年初也生一头小母牛。请编程实现在第 n 年的时候,共有多少头母牛?
输入
输入包含多组测试数据,每组数据为两个正整数 n、m(0
< n <= 80, 2 < m <= 10)。
输出
对于每组测试数据,输出对应的结果
示例输入
2 4 4 4
示例输出
2 4
关于递推,这是一种很蛋疼的题,(渣渣我是这么觉着。。),先找到子状态,由前面的一种或两种状态推出当前的状态,即为递推,写出递推公式,这道题就算完了
废话不说,这个题,对于前m年,由于生下的小牛都没成熟,所以牛的总数目为 f[n]=f[n-1]+1 (n<=m&&n>1 n=1时 f[1]=1);
对于m年以后的任意一年,假设第i年 ,第i年的牛的总数目应该是第i-1年的牛的总数f[i-1]加上第i-m+1年的牛的总数f[i-m+1](小牛该生啦)
总结一下f[n]= 1; n=1
=f[n-1]+1; n<=m;
=f[n-1]+f[n-m+1] n>m;
#include <iostream> //母牛的故事 递推练习 #include <algorithm> #include <cstring> #include <cstdio> using namespace std; int main() { int n,m,i; long long f[81]; while(cin>>n>>m) { for(i=1;i=<m;i++) f[i]=i; for(i=m+1;i<81;i++) f[i]=f[i-m+1]+f[i-1]; cout<<f[n]<<endl; } return 0; }