题目:
You are a professionalrobber planning to rob houses along a street. Each house has a certain amountof money stashed, the only constraint stopping you from robbing each of them isthat adjacent houses have security system connected and it will automaticallycontact the police if two adjacent houses were broken into on the same night.
Given a list ofnon-negative integers representing the amount of money of each house, determinethe maximum amount of money you can rob tonight without alerting the police.
分析:
动态规划
代码:
<span style="font-size:14px;">class Solution {
public:
int rob(vector<int>& nums) {
int unrobSize=nums.size();
vector<int> robMoney;
for(int i=0;i<unrobSize;i++)
robMoney.push_back(0);
if(unrobSize==0)
return 0;
if(unrobSize>0)
robMoney[0]=nums.at(0);
if(unrobSize>1)
{
if(nums.at(1)>nums.at(0))
robMoney[1]=nums.at(1);
else
robMoney[1]=nums.at(0);
}
for(int i=2;i<unrobSize;i++)
{
int robHouse=nums.at(i)+robMoney.at(i-2);
int unrobHouse=robMoney.at(i-1);
if(robHouse>unrobHouse)
robMoney[i]=robHouse;
else
robMoney[i]=unrobHouse;
}
return robMoney[unrobSize-1];
}
};
</span>
结果: