题目地址
一开始做这道题,实在难受,题意都不太懂。题意应该是母牛年初生一头小牛,然后第四个年头,成长成母牛,就是包括自己被生出来的那一年,就是第n年生出来,第n + 3年自己成长成母牛还生了一头小牛。
了解了题意,应该就简单了。
第n年牛数量的增加取决于母牛的数量,而母牛的数量又取决与到第n年有多少头母牛,也就是第n - 3年的牛的数量。
所以递推式是
f[n] = f[n - 1] + f[n - 3], (n >3)
代码
#include <iostream>
using namespace std;
int main() {
__int64 n[55];
n[1] = 1, n[2] = 2, n[3] = 3, n[4] = 4;
for(int i = 5; i < 55; ++i) {
n[i] = n[i - 1] + n[i - 3];
}
int t;
while(cin >> t && t) {
cout << n[t] << endl;
}
return 0;
}