动态规划解题步骤:
1.确定状态表示:dp[i]是什么
2.确定状态转移方程:dp[i]等于什么
3.初始化:确保状态转移方程不越界
4.确定填表顺序:根据状态转移方程即可确定填表顺序
5.确定返回值
题目链接:1137. 第 N 个泰波那契数 - 力扣(LeetCode)
题解:
1.状态表示:dp[i]表示第i个泰波那契数的值
2.状态转移方程:dp[i]=dp[i-1]+dp[i-2]+dp[i-3]
3.初始化:初始化dp表中的dp[0]、dp[1]、dp[2]
4.填表顺序:从左向右
5.返回值:dp[n]
class Solution {
public:
int tribonacci(int n) {
//处理边界条件
if(n==0||n==1) return n;
else if(n==2) return 1;
//创建dp表
vector<int> dp(n+1);
//初始化
dp[0]=0;dp[1]=1;dp[2]=1;
//填表
for(int i=3;i<=n;++i)
dp[i]=dp[i-1]+dp[i-2]+dp[i-3];
//返回值
return dp[n];
}
};