• 2023-09-16力扣每日一题-经典DP


    链接:

    198. 打家劫舍

    题意

    有n个数字,不能选取相邻的数字,求最终选取的最大

    经典DP,由于每个数字有拿与不拿两种状态,所以DP[I]刚好使用一个max

    拿,则DP[I-1]不能拿,为DP[I-2]+nums[i]

    不拿,则DP[i-1]可以拿,为DP[i-1]

    两者取max

    实际代码:

    #include
    using namespace std;
    int rob(vector& nums)
    {
    	int lg=nums.size();
    	if(lg==1) return nums[0];
    
    	vectordp(lg);
    	dp[0]=nums[0];dp[1]=max(nums[0],nums[1]);
    
     	for(int i=2;i
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    限制:

    • 1 <= nums.length <= 100
    • 0 <= nums[i] <= 400
  • 相关阅读:
    算法刷题日志——二叉树
    提升微服务稳定性与性能:深入剖析Netflix Hystrix框架
    vscode在线调试运行C/C++程序的方法
    设计模式——面向对象设计原则
    设计模式概述
    go小知识2
    体验文心一言“一镜流影”功能,实现短视频批量制作
    linux命令:计算的相关命令(expr、let、bc、(())、 $[])
    垃圾回收-《JavaScript 高级程序设计》阅读笔记
    HTML中华传统文化题材网页《中国民间年画》HTML+CSS+JavaScript
  • 原文地址:https://blog.csdn.net/Fei_WuYan/article/details/132926326