算法题day43(补5.29日卡:动态规划03)

一、01背包问题基础:

有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解哪些物品装入背包里物品价值总和最大。

1.用dp的方法做:

①dp[i][j]的含义:从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。

那么可以有两个方向推出来dp[i][j]。

②递推公式:

不放物品:此时dp[i][j]=dp[i-1][j]

放物品:此时dp[i-1][j-weight[i]+value[i]

so:dp[i][j] = max(dp[i-1][j],dp[i-1][j-wight[i]+value[i])

③初始化:dp[i][0]=0  for i in range(len(weight)(容量为0,装不了东西)

dp[0][j]==value[0] if j>=weight[0]

③如果想验证结果:建议自己画一下图。

2.用滚动数组的方法做(把二维dp降为一维dp):

①状态转移方程:dp[j] = max(dp[j],dp[j - weight[i]] + value[i])

②j需要倒序遍历

二、刷题:

1.卡码网46. 46. 携带研究材料(第六期模拟笔试) (kamacoder.com)

解决:

①二维dp方式:(ACM模式代码)

a = input().strip().split()
M = int(a[0])
N = int(a[1])
weight = [int(n) for n in input().split()]
values = [int(n) for n in input().split()]
dp =[[0]*(N + 1) for _ in range(M)]
for j in range(weight[0],N+1):dp[0][j] = values[0]
for i in range(1,M):for j in range(1,N+1):if j<weight[i]:dp[i][j] = dp[i-1][j]else:dp[i][j] = max(dp[i-1][j],dp[i-1][j-weight[i]] + values[i])
print(dp[M-1][N])

②降为一维dp:

(这种方法我其实不是很理解)

a = input().strip().split()
M = int(a[0])
N = int(a[1])
weight = [int(n) for n in input().split()]
values = [int(n) for n in input().split()]
dp =[0]*(N + 1)
for i in range(M):for j in range(N,weight[i] - 1,-1):dp[j] = max(dp[j],dp[j-weight[i]] + values[i])
print(dp[N])

2.leetcode题目416 416. 分割等和子集 - 力扣(LeetCode)

解决:

class Solution:def canPartition(self, nums: List[int]) -> bool:if sum(nums)%2 !=0:return Falsetarget = sum(nums)//2dp = [0]*(target+1)for num in nums:for j in range(target,num-1,-1):dp[j] = max(dp[j],dp[j-num]+num)return dp[target] == target

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/26743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

席卷的B站《植物大战僵尸杂交版》V2.0.88整合包,PC和手机可用,含通关存档和视频教程!

今天给大家安利一款席卷B站&#xff0c;火爆全网的游戏——《植物大战僵尸杂交版》2.0.88整合包。 这个是网络上现存植物大战僵尸杂交版的最全整合&#xff0c;包含了修改工具&#xff0c;超强通关存档和高清工具。工具包有安装视频教程&#xff0c;支持手机版和pc多端使用&am…

家用洗地机前十名排行榜:2024十大热销款式好用不踩雷

洗地机强大的清洁力和高效的清洁效率&#xff0c;迅速代替了吸尘器、电动拖把、蒸汽拖把的位置&#xff0c;成为家庭地面清洁的新宠&#xff0c;各大厂商也纷纷上新自家新品。但是这个也造成了人们在挑选机型的时候无从下手&#xff0c;甚至很多新手购机&#xff0c;几乎对洗地…

Typora 破解、激活!亲测有效!2024 最新激活方法

Typora 破解、激活&#xff01;亲测有效&#xff01;2024 最新激活方法 Typora是一款简单易用的Markdown编辑器。 Markdown是一种可以使用普通文本编辑器编写的标记语言&#xff0c;通过简单的标记语法&#xff0c;它可以使普通文本内容具有一定的格式&#xff0c;其目标是实现…

【Intel CVPR 2024】通过图像扩散模型生成高质量360度场景,只需要一个语言模型

在当前人工智能取得突破性进展的时代&#xff0c;从单一输入图像生成全景场景仍是一项关键挑战。大多数现有方法都使用基于扩散的迭代或同步多视角内绘。然而&#xff0c;由于缺乏全局场景布局先验&#xff0c;导致输出结果存在重复对象&#xff08;如卧室中的多张床&#xff0…

[AIGC] 深入理解Java Map接口

深入理解Java Map接口 Java Map提供了一个存储键值对的数据结构&#xff0c;键是唯一的&#xff0c;但值可以重复。在Java中&#xff0c;Map接口是java.util包中的一部分&#xff0c;它定义了操作映射的方法。本篇文章将介绍Java Map接口中的常用API。 Map接口常用方法 以下…

Web前端限制下载速度:深入探索与实现策略

Web前端限制下载速度&#xff1a;深入探索与实现策略 在Web前端开发中&#xff0c;限制下载速度的需求可能源于多种场景&#xff0c;如节省带宽、控制资源消耗或模拟网络延迟等。然而&#xff0c;这一需求在技术上却带来了不小的挑战。本文将从四个方面、五个方面、六个方面和…

Armbian OS(基于ubuntu24) 源码编译mysql 5.7

最近弄了个S905X3的盒子刷完Armbian OS &#xff08;基于ubuntu24&#xff09;&#xff0c;开始折腾Arm64之旅。第一站就遇到了MySQL的问题&#xff0c;由于MySQL没有提供Arm64版本&#xff0c;又不想塞Docker镜像&#xff0c;因此选择源码来编译MySQL5.7。下面记录详细过程和遇…

Golang的GC

目录 介绍GC 概要 什么是根对象 三色标记法 什么情况下三色标记法会失效 屏障机制 “强-弱” 三色不变式 插入屏障 (强三色) 删除屏障(弱三色) Go 的混合写屏障机制 混合写屏障规则 介绍GC 概要 作用范围&#xff1a;只回收堆内存&#xff0c;不回收栈内存&#xf…

EtherCAT主站SOEM -- 31 -- STM32F767-SOEM从站IO模块采集DI及输出DO

EtherCAT主站SOEM -- 31 -- STM32F767-SOEM从站IO模块采集DI及输出DO 0 QT-SOEM及STM32F767-SOEM视频欣赏及源代码链接:0.1 QT-SOEM博客、视频欣赏及源代码链接0.2 STM32F767-SOEM 博客、视频欣赏及源代码链接1 程序文件修改替换1.1 allvalue.h1.2 allvalue.c1.3 motrorcontro…

举个栗子!Tableau 技巧(276):学做径向柱状图(Radial Column Chart)

关于 径向柱状图&#xff08;Radial Column Chart&#xff09;&#xff0c;俗称环形柱状图。它的用法跟柱形图基本一致&#xff0c;不同之处在于它的值刻度是环形的&#xff0c;数值从内到外依次增加&#xff0c;柱子越长代表数值越大。 数据粉可能会问&#xff1a;径向柱形图…

大学英语综合教程3翻译1-5单元

Unit1 十年之前,南希做了许许多多美国人梦寐以求的事.她辞去了经理职位,在临近地区开了一家家用器具商店.像南希那样的人做出这种决定主要是想改善生活质量. A decade ago, Nancy did what so many Americans dream about. She quit an executive position and opened a hous…

独具韵味的移动端 UI 风格

独具韵味的移动端 UI 风格

10.GLM

智谱AI GLM 大模型家族 最强基座模型 GLM-130B GLM (General Language Model Pretraining with Autoregressive Blank Infilling) 基于自回归空白填充的通用语言模型&#xff08;GLM&#xff09;。GLM通过增加二维位置编码并允许以任意顺序预测跨度来改进空白填充预训练&…

SQL 截取函数

目录 1、substring 2、left 3、right 4、substring_index 1、substring 用途&#xff1a;字段截取从指定开始的字符开始&#xff0c;截取要的数&#xff1b;指定开始的字符数字可以用负的&#xff0c;指定开始的字符从后往前(向左)数&#xff0c;截取要的数不能为负。 语…

go语言 | 快速生成数据库表的 model 和 queryset

就是生成 model 目录的 xxx.go 和 xxx_gen.go 文件 使用的工具&#xff1a; 快速生成 model&#xff1a;gentool&#xff1a;https://github.com/go-gorm/gen/tree/master/tools/gentool 根据 model 生成 queryset&#xff1a;go-queryset&#xff1a;https://github.com/jirfa…

第三十一篇-OneAPI+Ollama实现配置

本文介绍使用oneapiollama实现openai接口实现 环境要求 Docker version 26.1.3 具体安装不会&#xff0c;百度安装oneapi mkdir /home/oneapi/data docker run --name one-api -d --restart always -p 3000:3000 -e TZAsia/Shanghai -v /home/oneapi/data:/data justsong/on…

2024.6.13 作业 xyt

今日作业&#xff1a; 自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 要求&#xff1a;每行代码都有注释 #include "my06zuoye.h"My06zuoye::My06zuoye(QWidget *parent): QMainWindow(parent) {//设置大小&#xff08;窗口&#xf…

java1.8运行arthas-boot.jar运行报错解决

报错内容 输入java -jar arthas-boot.jar&#xff0c;后报错。 [INFO] JAVA_HOME: D:\developing\jdk\jre1.8 [INFO] arthas-boot version: 3.7.2 [INFO] Can not find java process. Try to run jps command lists the instrumented Java HotSpot VMs on the target system.…

诚邀加盟!2025-CISP深圳国际体育展展位预定开启,共享发展机遇

2025-CISP深圳国际体育展定档官宣于2025年2月27-3月1日在深圳&#xff08;福田&#xff09;会展中心隆重开幕&#xff01;招商工作正式开启&#xff01; 体育创新融入现代生活&#xff0c;打造全球体育创新企业发布产品信息、展示前沿科技及倡导科学运动生活方式的全新平台。届…

为中小制造企业注入数字化转型活力

劳动力成本上升,原材料价格上涨,企业生产成本逐年增加&#xff0c;市场竞争越来越激烈&#xff0c;传统的中小制造企业面临着巨大的压力。 通过数字化转型应对环境的变化已成为行业共识&#xff0c;在数字化的进程中&#xff0c;中小企业首要考虑生存问题&#xff0c;不能沿用…