题例:
问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
一、三大步骤
第一步骤:定义数组元素的含义
定义dp[i]是什么意思(所求什么就定义什么)
题例:跳上i级的台阶总共有dp[i]种跳法,要求n级即要求dp[n]
第二步骤:找出数组元素之间的关系式
求数组元素之间的关系式
例题:dp[n]=dp[n-1]+dp[n-2](可能从前一个一阶跳上来或者是两阶跳上来的方法叠加)
第三步骤:找出初始值
注意数组不允许下标位负数
例题:因为dp[2]=dp[1]+dp[0],所以需要给出dp[1]和dp[0]
dp[1]=1,dp[0]=0
第四步骤:再次检查
观察我们知道dp[2]=2,但是dp[2]=dp[1]+dp[0]=0,所以不能从2开始要从3开始
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;int dp[1000];dp[0]=0,dp[1]=1,dp[2]=2;for(int i=3;i<=n;i++){dp[i]=dp[i-2]+dp[i-1];}cout<<dp[n];return 0;
}
本文参考:告别动态规划,连刷40道动规算法题,我总结了动规的套路-CSDN博客