1,动态规划(DP) 记忆化搜索 实质上是以空间换时间
最优子结构
无后效性
子问题重叠性 ---> 记忆化搜索
2,dp思想
开个数组存
计算前先看计算过没,计算过了直接返回结果
3,记忆化搜索 求解斐波纳契数列
#include<bits/stdc++.h>
using namespace std;
const int maxn = 105;
int dp[maxn];
// 记忆化搜索的基本结构
// 要怎么表示没被算过?
int f (int x)
{
// 算过了就不算了, 记忆化搜索的关键,一定要放在dfs的开头!!!!
if (dp[x] != -1) return dp[x];
if (x == 1 || x == 2) return 1;
int ans = f(x - 1) + f(x - 2);
dp[x] = ans;
return ans;
}
int main()
{
int n; cin