题目:打家劫舍
1.状态定义:
dp[i]指的是”到达第i个房子时,目前为止能偷到的最大金额是多少“
2.转移方程:
用一个例子来解释——
假如当前已经偷完了前3栋房子,来到了第四栋房子(里面有num元)
那么现在就有两个选择:
1).不偷第四栋房子,那么金额就是dp[3](也就是前三栋房子的最优结果)
2).偷第四栋房子,那么总金额就是dp[i-1] + num(前两栋房子的最优结果加上第四栋房子)
因此,前四栋房子的最大金额就是两者中的更大者
1int rob(vector<int>& nums)
2{
3 int pre = 0, curr = 0;
4 int temp;
5 for(int num : nums)
6 {
7 temp = curr;
8 curr = std::max(pre + num, curr);
9 pre = temp;
10 }
11 return curr;
12}