题目描述:
在一个数组里取一些数字,和最大,要求是不能取相邻数字。
思路:
DP。一看就会,一做就懵。
代码:
class Solution {
public:
int rob(vector<int>& nums) {
if (nums.empty()) return 0;
if (nums.size() == 1) return nums[0];
int pre1 = nums[0];
int pre2 = max(nums[0], nums[1]);
for (int i=2; i<nums.size(); ++i) {
int temp = max(pre1 + nums[i], pre2);
pre1 = pre2;
pre2 = temp;
}
return pre2;
}
};
这周是DP周。