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

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

相关推荐

来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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