原题链接: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;
}