您的位置:首页 > 其它

[LeedCode OJ]#198 House Robber

2015-08-24 15:03 302 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱: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;
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: