• 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
  • 相关阅读:
    UI设计必备网站,一定要收藏。
    Redis6:NoSQL数据库概述(特点)、行式、列式存储数据库、图关系型数据库
    Git 的基本概念和使用方式
    Linux入门攻坚——3、基础命令学习-文件管理、别名、glob、重定向、管道、用户及组管理、权限管理
    详解ClickHouse的ReplaceMergeTree
    springboot接收前端传参的几种方式
    MASA Blazor入门这一篇就够了
    Flutter——最详细(AppBar)使用教程
    Vue3+elementplus搭建通用管理系统实例五:后台主页搭建上
    keepalived群集
  • 原文地址:https://blog.csdn.net/Fei_WuYan/article/details/132926326