//记忆化搜索
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 30;
int n;
int num[N]; //用数组存一下每一个值
int bfs(int x)
{
int sum;
if (num[x]) return num[x];
if (x == 1) sum = 1;
else if (x == 2) sum = 2;
else sum = bfs(x - 1) + bfs(x - 2);
num[x] = sum;
return sum;
}
int main()
{
cin >> n;
int res = bfs(n);
cout << res << endl;
return 0;
}
dp
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 30;
int n;
int f[N];
int main()
{
cin >> n;
f[1] = 1, f[2] = 2;
if (n == 1 || n == 2)
{
cout << f[n] << endl;
return 0;
}
for (int i = 3; i <= n; i++)
{
f[i] = f[i - 1] + f[i - 2];
}
cout << f[n] << endl;
return 0;
}