[LeedCode OJ]#198 House Robber

来源:互联网 发布:音乐截取软件 for mac 编辑:程序博客网 时间:2024/06/02 15:45
【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】

题目链接:https://leetcode.com/problems/house-robber/

题意:
一条街程直线排列,街道上有一些房子,一个小偷去偷东西,每个房子里面都有一个价值,要求小偷在不偷相邻的房子的情况下,能得到的最大价值是多少

思路:
dp[i][j]代表小偷对于第i个房子采取的行动,j=0代表不偷,j=1代表偷
那么就能得到状态转移方程:
dp[i][0] = max(dp[i-1][0],dp[i-1][1]);
dp[i][1] = dp[i-1][0]+nums[i];

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


0 0
原创粉丝点击