增加主调函数,并调用House Robber代码。
代码如下
class Solution {
public:
int dp(vector<int>& nums) {
int hasFinal, exceptFinal;
if(nums.size() == 0)
return 0;
if(nums.size() == 1)
return nums[0];
if(nums.size() == 2) {
if(nums[0] > nums[1])
return nums[0];
else
return nums[1];
}
int tmp1, tmp2;
int maxNM1 = max(nums[0], nums[1]);
int maxNM2 = nums[0];
int maxN;
for(int i = 3; i <= nums.size(); i++) {
if(i != 3) {
maxNM2 = maxNM1;
maxNM1 = maxN;
}
tmp1 = maxNM2 + nums[i - 1];
tmp2 = maxNM1;
maxN = max(tmp1, tmp2);
}
return maxN;
}
int rob(vector<int>& nums) {
if(0 == nums.size())
return 0;
if(1 == nums.size())
return nums[0];
if(2 == nums.size())
return max(nums[0], nums[1]);
vector<int> oneToNMinus2(nums.begin() + 1, nums.end() - 2);
vector<int> zeroToNMinusone(nums.begin(), nums.end() - 1);
return max(*(nums.end() - 1) + dp(oneToNMinus2), dp(zeroToNMinusone));
}
};