动态规划
能解决的问题:
1:计数
2:最值
3:存在性
解题步骤:
-
最后一步
-
dp数组的含义
-
状态转移方程
-
dp数组的初始化
-
dp遍历的顺序
-
题目wa的话,需打印dp值
-
实例带入
例子:斐波那契数列
//最后一步:前面的数据已经算好,最后一步数据只需要拿到它的前两个数据即可//dp数组的含义:第i个数的斐波那契是dp[i]//状态转移方程:dp[i] = dp[i - 1] + dp[i – 2]//dp数组的初始化;dp[0] = 0; dp[1] = 1;实例代入:dp[5] = dp[4] + dp[3] dp[4] = dp[3] + dp[2] dp[3] = dp[2] + dp[1]dp[2] = dp[1] + dp[0]过程:dp[5] = 5;dp[4] = 3;dp[3] = 2;dp[2] = 1;int fib(int n){if(n < = 1)return n;vector<int >dp(n + 1)dp[0] = 0;dp[1] = 1;for(int i = 2; i <= n; i++) 确定遍历的顺序{dp[i] = dp[i -1] + dp[i – 2];}return dp[n];}