House Robber (LeetCode)

Question:

https://leetcode.com/problems/house-robber/

 

解答:

DP. 

maxProfit[i] = max(maxProfit[i-1], maxProfit[i-2]+number[i]);

 

class Solution {
public:
    int rob(vector<int> &num) {
        
        if (num.size() == 0)
            return 0;
            
        std::vector<int> maxProfit(num.size(), 0);
        
for (int i = 0; i < num.size(); i++)
        {
            maxProfit[i] = num[i];
            
            if (i >= 2)
                maxProfit[i] += maxProfit[i-2];
            
            if (i >= 1 && maxProfit[i-1] > maxProfit[i])
                maxProfit[i] = maxProfit[i-1];
        }
        
        return maxProfit[num.size()-1];
    }
};

 

posted @ 2015-04-07 14:14  smileheart  阅读(137)  评论(0)    收藏  举报