当前位置: 首页 > news >正文

代码随想录day46|139. 单词拆分

139. 单词拆分

class Solution:def wordBreak(self, s: str, wordDict: List[str]) -> bool:dp = [False]*(len(s)+1)dp[0]=Truefor i in range(len(s)+1):for j in wordDict:if i>=len(j) and (s[i-len(j):i] in wordDict) and dp[i-len(j)]:dp[i] = Truereturn dp[len(s)]

多重背包即为每个物品有并不是只能用一次,也不是无限重复使用,而是有nums数组控制使用物品的个数,将其展开就变成了0-1背包问题

def test_multi_pack():weight = [1, 3, 4]value = [15, 20, 30]nums = [2, 3, 2]bagWeight = 10# 将数量大于1的物品展开for i in range(len(nums)):while nums[i] > 1:weight.append(weight[i])value.append(value[i])nums[i] -= 1dp = [0] * (bagWeight + 1)for i in range(len(weight)):  # 遍历物品for j in range(bagWeight, weight[i] - 1, -1):  # 遍历背包容量dp[j] = max(dp[j], dp[j - weight[i]] + value[i])for j in range(bagWeight + 1):print(dp[j], end=" ")print()print(dp[bagWeight])test_multi_pack()

问能否能装满背包(或者最多装多少):dp[j] = max(dp[j], dp[j - nums[i]] + nums[i])

问装满背包有几种方法:dp[j] += dp[j - nums[i]]

问背包装满最大价值:dp[j] = max(dp[j], dp[j - weight[i]] + value[i])

问装满背包所有物品的最小个数:dp[j] = min(dp[j - coins[i]] + 1, dp[j])

http://www.lryc.cn/news/161983.html

相关文章:

  • MATLAB实现函数拟合
  • vue优化首屏加载时间优化-cdn引入第三方包
  • lv4 嵌入式开发-3 标准IO的读写
  • iOS UIDevice设备信息
  • SLAM ORB-SLAM2(2)编译安装
  • 第11节-PhotoShop基础课程-索套工具
  • Json字符串内容比较-超实用版
  • Redis系列之客户端Redisson
  • centos 端口被占用的快速排查方式
  • Java“牵手”淘宝商品列表数据,关键词搜索淘宝商品数据接口,淘宝API申请指南
  • OpenEuler/CentOS如何修改密码策略
  • # Spring MVC与RESTful API:如何设计高效的Web接口
  • Scrum敏捷模式的优势点、实践经验及适用企业
  • 【C++杂货铺】探索stack和queue的底层实现
  • “系统的UI”——SystemUI
  • 类和对象:构造函数,析构函数与拷贝构造函数
  • 谈谈Java的特点和优点以及选择Java的原因
  • 消息队列(MQ)面试
  • 无涯教程-JavaScript - COUPNUM函数
  • 上海控安携汽车网络安全新研产品出席AUTOSEMO“恒以致远,共创共赢”主题研讨会
  • 小程序引入高德/百度地图坐标系详解
  • 英诺森 “供应链智能数据平台”荣获“科技进步奖”
  • kafka 3.5 主题分区的Follower创建Fetcher线程从Leader拉取数据源码
  • Golang web 项目中实现自定义 recovery 中间件
  • Direct3D绘制旋转立方体例程
  • ElementUI浅尝辄止31:Tabs 标签页
  • 将 ChatGPT 用于数据科学项目的指南
  • 06-JVM对象内存回收机制深度剖析
  • [VSCode] 替换掉/去掉空行
  • 时序分解 | MATLAB实现ICEEMDAN+SE改进的自适应经验模态分解+样本熵重构分量