House Robber

原创 2016年08月28日 14:44:23

题目:

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.

分析:

动态规划,找到等式为


dp[i]=dp[i-1]+nums[i]  if  dp[i-1]==dp[i-2]

dp[i]=max(dp[i-2]+nums[i], dp[i-1])

根据这个动态规划等式,dp[i]为前i个house能偷到的最大数。

代码:

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




Leetcode 198: House Robber

House Robber Total Accepted: 642 Total Submissions: 2562You are a professional robber planning to r...
  • xudli
  • xudli
  • 2015年04月01日 02:51
  • 4447

198. House Robber Leetcode Python

You are a professional robber planning to rob houses along a street. Each house has a certain amount...
  • hyperbolechi
  • hyperbolechi
  • 2015年03月31日 22:28
  • 1261

Leetcode_198_House Robber

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/47680663 You are a profes...
  • pistolove
  • pistolove
  • 2015年08月15日 12:02
  • 2116

leetcode 337. House Robber III-动态规划|Java|Python简洁高效

原题链接:337. House Robber III 【思路】 和 House Robber 十分类似,是Dynamic Programming问题。这里使用递归来实现,数组rob来存储。rob[0...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2016年03月13日 21:06
  • 4650

198. House Robber [easy] (Python)

题目链接 https://leetcode.com/problems/house-robber/ 题目原文 You are a professional robber planning t...
  • coder_orz
  • coder_orz
  • 2016年06月01日 14:39
  • 1379

[leetcode-337]House Robber III(java)

原题:House RobberIII对于这种树形结构,应该很容易想到使用递归的方法,这里的难点在于递归的时候相邻点不能同时访问,因此我写成了第一种做法,也ac了,但是这样并不好,因为它对很多点都会重复...
  • zdavb
  • zdavb
  • 2016年03月27日 22:19
  • 832

[leetcode] 337. House Robber III

The thief has found himself a new place for his thievery again. There is only one entrance to this a...
  • TstsUgeg
  • TstsUgeg
  • 2016年03月12日 20:20
  • 2334

leetCode198-House Robber

链接:https://leetcode.com/problems/house-robber/ 这道理可以看做是状态压缩,每两个数字看做是一行,状态有3个,故需要F[N][3]的数组,F[i][j]就表...
  • Lu597203933
  • Lu597203933
  • 2015年04月01日 18:28
  • 7407

leetcode 213 : House Robber II

leetcode 213 : House Robber II
  • xudli
  • xudli
  • 2015年05月21日 07:36
  • 9550

【LeetCode-面试算法经典-Java实现】【198-House Robber(抢劫犯)】

【189-House Robber(抢劫犯)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-Jun-Chao】原题  Y...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月25日 06:41
  • 3810
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:House Robber
举报原因:
原因补充:

(最多只允许输入30个字)