题目

题意:给你一个数组表示一个街道,每个数字表示一个房子里有多少钱,你可以打劫获得这些钱,但是不能同时打劫相邻的房子,问你最多可以得到多少钱,

题解:动态规划,DP[i][0]表示第0个房子没有打劫,DP[i][1] 表示第1个房子打劫了。

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

相关文章:

  • 2022-02-26
  • 2022-12-23
  • 2021-05-19
  • 2022-12-23
  • 2022-12-23
  • 2021-06-26
猜你喜欢
  • 2021-06-24
  • 2022-01-24
  • 2021-07-13
  • 2021-11-23
  • 2021-12-17
  • 2021-05-30
相关资源
相似解决方案