198. House Robber

来源:互联网 发布:mt4软件使用 编辑:程序博客网 时间:2024/06/15 05:33

198. House Robber

题目:

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and it will automatically contact the police if two adjacent houses were broken into on the same night.Given a list of non-negative integers representing the amount of money of each house, determine the maximum amount of money you can rob tonight without alerting the police.

代码如下:

#define max(a, b) ((a > b) ? a : b)class Solution {public:    int rob(vector<int>& nums) {        int case1 = 0, case2 = 0;        for (int i = 0; i < nums.size(); i++) {          if (i % 2 == 0)            case1 = max(case1 + nums[i], case2);          else             case2 = max(case1, case2 + nums[i]);        }        return max(case1, case2);    }};

解题思路:

本题初看复杂,仔细思考实则简单。主要问题是把问题分解成多个子问题,即求出到目前房子为止,之前所有房子所能抢到的最大值,然后继续这个过程。