dp算法是比较抽象的算法,因此在学习此算法的时候往往做题找不到头绪,不知道dp方程如何写以及如何实现的,因此需要我们提前认识很多类似的题,才能正确判断是否属于dp算法范畴,但是实际在写的时候往往是难以找到头绪的,以下是我对dp算法认识的一些经典题目。
1 爬楼梯问题
题目要求算出第n阶楼梯的方案数,每次可以选择爬1梯或者2梯,
每次可以选择1梯或者两梯,所以属于动态dp
具体实现dp方程是
dp[i]=dp[i-1]+dp[i-2];
原理:
当我们想算第n阶阶梯的方案数,我们可以通过算出第n-1阶的方案数,但是我们可以选择跳1格或者2格,所以当我们算第n阶阶梯的方法自然就转换为了算第n-1阶阶梯的方案数和n-2阶方案数之和。
以下是实现过程
#include<iostream>
using namespace std;
int a[1001];