原題鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2041
題目分析:題目是真的水,不難發現規律涉及斐波那契數列,就直接上代碼吧。
代碼如下:
#include <iostream>
#include <cstring>
using namespace std;
int t, n, num[40];
int dp(int n) {
if (n == 1 || n == 2) return num[n] = n;
if (num[n] != -1) return num[n];
return num[n] = dp(n-1) + dp(n - 2);
}
int main() {
cin >> t;
while (t--) {
memset(num, -1, sizeof(num));
cin >> n;
cout << dp(n - 1) << endl;
}
return 0;
}