• 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
  • 相关阅读:
    JavaSE 第十一章 泛型
    银行卡号识别
    2. MongoDB 应用与开发-安装
    c语言练习95:练习使用双向链表(实现增删改查)
    Kafka消息队列中关于消息的实现原理
    计算机毕业设计Java自动化办公系统(源码+系统+mysql数据库+lw文档)
    GBase8s数据库SET COLLATION 语句
    java计算机毕业设计在线专业培养方案系统源码+mysql数据库+系统+lw文档+部署
    ctfshow-web-web15 Fishman
    使用nvim来代替VSCode,神操作
  • 原文地址:https://blog.csdn.net/Fei_WuYan/article/details/132926326