day42|完全背包问题 518. 零钱兑换 II 377. 组合总和 Ⅳ 322. 零钱兑换 279.完全平方数 139.单词拆分 多重背包问题

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情


前言

小结

  1. 💕完全背包这里有趣的是排列顺序的问题
    • 如果要组合,就是先遍历物品再遍历背包,这样就不会有重复的【518零钱兑换】
    • 如果要排列,就是先遍历背包再遍历物品,这样就可以有重复的【377. 组合总和 Ⅳ】

完全背包问题

在这里插入图片描述

与01背包最大的区别在于物品可以放是无数个;

思路

区别:01背包是倒序的取法,因为只能放一次;那么这里完全背包可以放无数次,明显只能正序遍历;
纯完全背包物品和重量的循环的顺序是可以颠倒的

  • (我的理解)这里递推公式显示只与前面的元素有关【列向更新】,并且遍历重量是从前往后遍历,所以遍历顺序无关;下面给出了横向遍历和列向遍历的例子;
    在这里插入图片描述

  • 而01背包是从后往前遍历,如果后遍历物品的话,从后往前,前面的都还么有处理过呢,都是0,肯定是不对的;

方法一

下面是我自己写的,包括数据读取。

def Completebag(weights,values,bagweight):
    dp = [0] * (bagweight+1)
    for i in range(len(values)):
        for j in range(weights[i],bagweight+1,1):
            dp[j] = max(dp[j],dp[j-weights[i]]+values[i])
    return dp[bagweight]

if __name__ == "__main__":
    first_line = list(map(int,input().strip().split()))
    N,V  = first_line[0], first_line[1]
    weights, values = [], []
    for i in range(N):
        input_ = list(map(int,input().strip().split()))
        weights.append(input_[0])
        values.append(input_[1])
    # print(weights,values)
    result = Completebag(weights,values,V)
    print(result)

518. 零钱兑换 II

在这里插入图片描述

思路

🎈完全背包问题相较于01背包,最大的区别就是遍历顺序不同,别的几乎都一样

本题思路仍然是二维数组来想:我们先想象横向遍历,从前往后遍历,这就意味着前面的是一个考虑过放过物品i的了。所以递推公式还是一样的两个情况:重量为j的时候,不取物品i和取物品i的两个情况

0 1 2 3 4 5
1 1 1 1 1 1 1
2 1 1 2 2 3 3
5 1 1 2 2 3 4

dp五部曲

  1. dp含义: 装满背包容量为j的组合数
  2. 递推公式:前面讲过;dp[j] += dp[j - coins[i]];
  3. 初始化:dp[0]=1,这里设定为1【有争议的】,非0下标初始化为0
  4. 遍历顺序:这里必须先写遍历物品,再写遍历背包重量【也就是横向遍历】
    • 因为这里是组合而不是排列,如果先遍历物品的话是先看1,再看2,再看5这样,不会有重复的,例如2,1,2 和1,2,2这种,一定是组合,是符合的
    • 如果是先写遍历背包重量再写物品的话【纵向遍历】,就会出现2,1,2 和1,2,2的情况;具体原因见下面b站评论,讲得很好
      在这里插入图片描述

方法一

本题的重点是遍历顺序,必须要先物品再背包重量
初始化为1,一定为1否则不对

class Solution(object):
    def change(self, amount, coins):
        """
        :type amount: int
        :type coins: List[int]
        :rtype: int
        """
        dp = [0]*(amount+1)
        dp[0] = 1
        for i in coins:
            for j in range(i,amount+1):
                dp[j]
Squareline Studio + LVGL实战:从Figma设计到MCU屏幕的UI开发一条龙(避坑中文显示) 本文详细介绍了使用Squareline Studio和LVGL实现从Figma设计到MCU屏幕UI开发的全流程,重点解决中文显示等常见问题。通过设计工具链搭建、设计稿转换、LVGL工程集成及性能优化等步骤,帮助开发者高效完成嵌入式GUI开发,提升开发效率。 阅读详情

相关推荐

TI DSP从COFF切换到EABI输出格式的5个关键修改点(TMS320F280025实测)

本文基于TMS320F280025实测,详细解析了TI DSP从COFF切换到EABI输出格式的5个关键修改点。核心差异在于EABI遵循ELF标准,涉及链接器优化、RAM数据共享、工具链升级、double数据类型位宽变化及链接器命令文件重构。迁移时需使用.retain指令防止关键数据被优化,利用NOINIT段保护共享RAM,并更新hex2000等工具,以确保BootLoader与应用程序稳定运行。

weixin_29189381的博客 266

Unity海洋渲染实战:Ceto Ocean System核心原理与高级应用指南

实时水面渲染是计算机图形学中的重要课题,涉及波浪模拟、光照交互和着色器编程等核心技术。其原理通常基于物理模型,如使用Gerstner波模拟规则海浪,或通过快速傅里叶变换(FFT)处理频谱数据生成随机海面。这些技术的价值在于能以可控的性能开销,在游戏中实现具有体积感、反射和折射效果的真实水体。在开放世界、海战模拟等应用场景中,专业的海洋系统如Ceto Ocean System,通过模块化架构整合了波浪生成、动态网格和渲染管线,为开发者提供了完整的解决方案。本文深入探讨了其双引擎波浪系统和多层渲染结构,并分享了

weixin_29002595的博客 279

VBA中如何使用Edge内核Browser?

在微软宣布停止对IE的支持后,许多使用VBA中Web Browser的用户遇到了困境,因为Web Browser使用的IE内核。然而微软并没有给出支持Edge的新版Web Browser,网上许多第三方的库也不够完善。经过调研,libEdge可以较好的和VBA集成,实现在Excel中打开Browser,甚至能够通过执行js代码,获取web页面的信息。项目需要WebView2Loader.dll和LibEdge.dll两个库,区分x86和x64版本。

金木AI 2396

从信号到振镜:STM32F103 + XY2-100协议 + AM26LS31芯片的激光打标/雕刻系统信号链搭建指南

本文详细介绍了基于STM32F103微控制器和XY2-100协议的激光打标/雕刻系统信号链搭建方法。从数字振镜控制协议解析、AM26LS31差分驱动电路设计到信号完整性优化,提供了一套完整的解决方案,帮助工程师实现高精度激光控制系统的开发与调试。

weixin_42536058的博客 236

【Cmder】--- Windows11 配置CMD神器 (超详细 持续更新中)

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

秋知叶i 1万+

【Claude Code】Unable to connect to API 报错原因与排查解决全流程

深入分析 Claude Code 中 Unable to connect to API 系列报错的根因,涵盖 ECONNREFUSED、ECONNRESET、ETIMEDOUT 等 6 种变体,提供从网络连通性检测、代理配置到 LLM 网关路由的完整排查路径,帮助开发者快速恢复 Claude Code 的正常使用。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 2847

开放平台实现安全的身份认证与授权原理与实战:使用OAuth 2.0实现授权码模式

作者:禅与计算机程序设计艺术 1.背景介绍 随着互联网应用的飞速发展,各种网站、App、小程序等都将逐渐向用户提供了丰富的功能和服务。在这些应用中,用户通常需要登录才能使用这些服务,这就涉及到用户信息的安全问题。如果用户的信息被泄露或篡改,那么可能造成严重后果。因此,为这些应用提供安全且健壮的身份验

AI天才研究院 494

基于YOLOv8的应急通道占用监测系统设计与实现

通过详细的数据集选择、模型训练、代码实现等内容,本博客为您提供完整的系统搭建过程,帮助您构建高效的监测系统。然而,在一些建筑物和公共场所中,应急通道经常被不当占用,导致紧急情况下无法及时使用,严重影响人员的疏散效率。YOLOv8是YOLO系列中的最新版本,它通过引入深度学习的优化和改进,在保证检测速度的同时,显著提升了检测精度。同时,随着深度学习技术的不断发展,检测精度与速度的提升将使得该系统在更广泛的场景中应用。:如果已有监控设备,可以采集应急通道的实时视频,并进行标注,生成占用监测数据集。

YOLO 797

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: 笔试输入ACM模式记录 python语言
下一篇: day43|打家劫舍系列 198.打家劫舍 213. 打家劫舍 II 337.打家劫舍 III
Xalileetcode
博客等级 码龄7年 482粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值