码迷,mamicode.com
首页 > 其他好文 > 详细

OJ练习38——T198 House Robber

时间:2015-05-04 10:00:19      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

抢劫一排沿街的房子,每一家有不同的财富值,一夜之内抢了连续两家就会拉响报警。

给出每家的财富值,求最多能抢到多少?

【思路】

动态规划求最优解。

解题关键:递推式——maxV[i]=max{maxV[i-2]+nums[i], maxV[i-1]};

【other code】

int rob(vector<int>& nums) {
        int n=nums.size();
        if(n==0)
            return 0;
        if(n==1)
            return nums[0];
        vector<int> maxV(n,0);
        maxV[0]=nums[0];
        maxV[1]=max(nums[0],nums[1]);
        for(int i=2; i<n; i++)
            maxV[i]=max(maxV[i-2]+nums[i], maxV[i-1]);
        return maxV[n-1];
    }

【notes】

动态规划基本思想,由最简单的情况开始,每加入一个节点,要计算当前的最优值。

代码很容易,算法很难想,关键是递推式。

OJ练习38——T198 House Robber

标签:

原文地址:http://www.cnblogs.com/ketchups-notes/p/4475344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!