题意
每两个相邻物品只能拿一个,求能拿到的最大物品总价值。
思路
状态转移方程为:
d
p
[
x
]
=
m
a
x
(
d
p
[
x
−
1
]
,
d
p
[
x
−
2
]
+
n
u
m
s
[
x
]
)
dp[x] = max(dp[x-1], dp[x-2] + nums[x])
dp[x]=max(dp[x−1],dp[x−2]+nums[x])
代码
class Solution {
public:
int rob(vector<int>& nums) {
if (nums.size() == 0) return 0;
int dp[100005];
nums.insert(nums.begin(), 0);
dp[0] = 0; dp[1] = nums[1];
for (int i = 2; i < nums.size(); i++)
{
dp[i] = max(dp[i-2]+nums[i], dp[i-1]);
}
return dp[nums.size()-1];
}
};