Week3-Day5 | #秒懂本题DP思路#

举个例子来算一下如何取最优

[1 3 4 6]
我们从开始选择,此时能够得到的最大值是1,
时,我们应该在中选择,最大值变为3,
此时到,此时选择是从前一个的最大值和+下标为2-2时的最大值来比较取最大值,
时,应该从前一个的最大值和+下标为3-2时的最大值,及

我们创建f数组,f[i]表示前i个房子能够得到的最大值
那么就可以替换一下上面的分析

f[0]=nums[0]
f[1]=max(nums[0],nums[1])
f[2]=max(f[2-1],nums[2]+f[2-2])
f[3]=max(f[3-1],nums[3]+f[3-1])
那么可以得出状态转移方程
code

#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    int rob(vector<int>& nums) {
        int n=nums.size();
        if(n==1)return nums[0];

        vector<int>f(n);
        f[0]=nums[0];
        f[1]=max(nums[0],nums[1]);
        
        for(int i=2;i<n;i++){
            f[i] = max(f[i-1],nums[i]+f[i-2]);
        }
        return f[n-1];
    }
};

alt

#和牛牛一起刷题打卡#
全部评论

相关推荐

内向的柠檬精在研究求...:这不才9月吗,26到明年毕业前能一直找啊,能拿下提前批,转正的,offer打牌的都是有两把刷子的,为什么非要跟他们比。如果别人是9本硕+金牌+好几段大厂实习呢?如果别人是双非通天代呢?如果别人是速通哥呢?,做好自己就行了,我们做不到他们一样提前杀死比赛,但晚点到终点也没啥关系吧
双非应该如何逆袭?
点赞 评论 收藏
分享
09-01 16:09
门头沟学院 Java
点赞 评论 收藏
分享
09-23 17:42
门头沟学院 Java
兄弟们我绷不住了,小米要求10月份参加编程考试,20级以下(王腾好像21),正式和外包都得去,还要部门大排名,一巴掌给我抽象的回到大学
flex*1022:雷:我们想了很久,到底怎么样才能让用户满意,让工程师保持手感,经过长达180天的思考,我连夜睡服高管,决定发起内部考试,以编程为主
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务