背包问题算法

背包问题算法

  • 0-1背包问题
    • 二维数组
    • 一维数组
  • 完全背包问题
    • 二维数组
    • 一维数组
  • 多重背包问题
    • 一维数组

0-1背包问题

问题:背包的容量为9,有重量分别为[2, 4, 6, 9]的四个物品,价值分别为[3, 4, 5, 6],求背包能装的物品的最大价值是多少,每种物品的数量最多为1

二维数组

w = [2, 4, 6, 9]  # 重量
v = [3, 4, 5, 6]  # 价值
c = 9  # 最大容量
n = len(w)  # 物品数量
w.insert(0, 0)
v.insert(0, 0)
dp = [[0] * (c + 1) for _ in range(n + 1)]
for i in range(1, n + 1):for j in range(1, c + 1): # 正向if j >= w[i]:dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i])else:dp[i][j] = dp[i - 1][j]for rows in dp:print(rows)
print('最大value:', dp[n][c])

一维数组

w = [2, 4, 6, 9]  # 重量
v = [3, 4, 5, 6]  # 价值
c = 9  # 最大容量n = len(w)  # 物品数量
w.insert(0, 0)
v.insert(0, 0)
dp = [0] * (c + 1)
for i in range(1, n + 1):for j in range(c, 0, -1): # 逆向if j >= w[i]:dp[j] = max(dp[j], dp[j - w[i]] + v[i])print(dp)
print('最大value:', dp[c])

完全背包问题

问题:背包的容量为9,有重量分别为[2, 4, 6, 9]的四个物品,价值分别为[3, 4, 5, 6],求背包能装的物品的最大价值是多少,每种物品的数量最多不限

二维数组

w = [2, 4, 6, 9]  # 重量
v = [3, 4, 5, 6]  # 价值
c = 9  # 最大容量n = len(w)
w.insert(0, 0)
v.insert(0, 0)dp = [[0] * (c + 1) for _ in range(n + 1)]for i in range(1, n + 1):for j in range(1, c + 1): # 正向if j >= w[i]:dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + v[i])else:dp[i][j] = dp[i - 1][j]
for values in dp:print(values)
print('最大value:', dp[n][c])

一维数组

w = [2, 4, 6, 9]  # 重量
v = [3, 4, 5, 6]  # 价值
c = 9  # 最大容量n = len(w)w.insert(0, 0)
v.insert(0, 0)dp = [0] * (c + 1)for i in range(1, n + 1):for j in range(0, c + 1): # 正向if j >= w[i]:dp[j] = max(dp[j], dp[j - w[i]] + v[i])print(dp)
print('最大value:', dp[c])

多重背包问题

问题:背包的容量为10,有重量分别为[2, 4, 6, 9]的四个物品,价值分别为[3, 4, 5, 6],求背包能装的物品的最大价值是多少,每种物品的数量最多分别为[2, 1, 2, 1]

一维数组

w = [2, 4, 6, 9]  # 重量
v = [3, 4, 5, 6]
counts = [2, 1, 2, 1]  # 数量
c = 10  # 最大容量
n = len(w)w.insert(0, 0)
v.insert(0, 0)
counts.insert(0, 0)dp = [0] * (c + 1)for i in range(1, n + 1):for j in range(c, 0, -1): # 逆向for k in range(1, counts[i] + 1):if j >= k * w[i]:dp[j] = max(dp[j], dp[j - k * w[i]] + v[i])print(dp)
print('最大value:', dp[c])

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

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

相关文章

Orange3数据预处理(预处理器组件)

1.组件介绍 Orange3 提供了一系列的数据预处理工具,这些工具可以帮助用户在数据分析之前准备好数据。以下是您请求的预处理组件的详细解释: Discretize Continuous Variables(离散化连续变量): 这个组件将连续变量转…

个人网站展示(静态)

大学期间做了一个个人博客网站,纯H5编码的网站,利用php搭建了一个留言模块。 有需要源码的同学,可以联系我~ 首页: IT杂记模块 文人墨客模块 劳有所获模块 生活日志模块 关于我 一个推崇全栈开发的前端开发人员 微信: itrzzh …

elasticsearch篇

1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在电商网站搜索商品 在百度搜索答案 在打车软件搜索附近…

代码随想录算法训练营Day39 || leetCode 762.不同路径 || 63. 不同路径 II

62.不同路径 每一位的结果等于上方与左侧结果和 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector(n,0));for (int i 0; i < m; i) dp[i][0] 1;for (int j 0; j < n; j) dp[0][j] 1;for (int i 1; i < m; …

使用docker部署redis集群

编写脚本 批量创建目录文件&#xff0c;编写配置文件 [rootlocalhost ~]# cat redis.sh #/bin/bash for port in $(seq 1 6); do mkdir -p /mydata/redis/node-${port}/conf touch /mydata/redis/node-${port}/conf/redis.conf cat << EOF >>/mydata/redis/node-…

安卓开发面试题

安卓开发面试题 解释一下 Android 中的四大组件。 答&#xff1a;Android 中的四大组件是 Activity、Service、BroadcastReceiver 和 ContentProvider。其中&#xff0c;Activity 负责界面展示和与用户交互&#xff1b;Service 负责后台服务处理&#xff1b;BroadcastReceiver …

新学习到的知识点【Python/C++】,持续更新中

新学习到的Python知识点 os.makedirs(gnss_path_output, 0o775&#xff09;0o775: 这是目录权限的参数。在这里&#xff0c;0o775 表示八进制数&#xff0c;对应于文件系统中的权限设置。具体来说&#xff0c;它是由三个八进制数字组成&#xff0c;分别表示所有者&#xff08;…

记录西门子:IO隔离SCL编程

在PLC变量中创建IO输入输出 在PLC类型中创建输入和输出&#xff0c;并将PLC变量的输入输出名称复制过来 创建一个FC块或者FB块 创建一个DB块 MAIN主程序中&#xff1a;

【UVM_phase objection_2024.03.08

phase 棕色&#xff1a;function phase 不消耗仿真时间 绿色&#xff1a;task phase 消耗仿真时间 run_phase与右边的phase并行执行&#xff0c;右边的phase&#xff08;run_time phase&#xff09;依次执行&#xff1a; List itemreset_phase对DUT进行复位&#xff0c;初始…

三丰云免费云服务器

背景 在2020年的双十一买过华为云的打折服务器&#xff0c;属于最低配的个人使用的服务器&#xff0c;当时价格为80~90元/年&#xff0c;由本人亲测&#xff0c;使用体验很差&#xff0c;最差的时候连后台都不一定能登上去&#xff0c;猜测应该是没有提供标明的服务器性能&…

24 深度卷积神经网络 AlexNet【李沐动手学深度学习v2课程笔记】(备注:含AlexNet和LeNet对比)

目录 1. 深度学习机器学习的发展 1.1 核方法 1.2 几何学 1.3 特征工程 opencv 1.4 Hardware 2. AlexNet 3. 代码 1. 深度学习机器学习的发展 1.1 核方法 2001 Learning with Kernels 核方法 &#xff08;机器学习&#xff09; 特征提取、选择核函数来计算相似性、凸优…

总结:Spring创建Bean循环依赖问题与@Lazy注解使用详解

总结&#xff1a;Spring创建Bean循环依赖问题与Lazy注解使用详解 一前提知识储备&#xff1a;1.Spring Bean生命周期机制&#xff08;IOC&#xff09;2.Spring依赖注入机制&#xff08;DI&#xff09;&#xff08;1&#xff09;Autowired注解标注属性set方法注入&#xff08;2&…

Google Kickstart2018 Round H Problem B - 壁画

562. 壁画 - AcWing题库 Thanh 想在一面被均分为 N 段的墙上画一幅精美的壁画。 每段墙面都有一个美观评分&#xff0c;这表示它的美观程度&#xff08;如果它的上面有画的话&#xff09;。 不幸的是&#xff0c;由于洪水泛滥&#xff0c;墙体开始崩溃&#xff0c;所以他需要加…

步进电机的神秘世界:斩波与细分算法的探索之旅

欢迎来到步进电机的奇妙领域&#xff01;今天&#xff0c;我们将一同揭开斩波和细分算法的神秘面纱&#xff0c;并探讨它们的编程实现。准备好踏上这趟充满惊喜的探索之旅了吗&#xff1f;让我们一起出发吧&#xff01; 首先&#xff0c;让我们了解一下步进电机斩波的原理。为了…

docker启动nginx容器脚本

1、docker容器用来启动nginx&#xff0c;只需要执行以下脚本即可&#xff1a; #!/bin/sh docker stop docker-nginx-container-name docker rm docker-nginx-container-name docker run --name docker-nginx-container-name -p 8001:8001 -p 80:80 -p 8222:8222 \-v /usr/loc…

vim搜索和替换

目录 正则表达式1.特殊字符2.字符类(character-classes)3.规则4.交替和分组5.量词(quantifier)和重数(multi)贪婪模式(greedy)非贪婪模式(non-greedy) 6.魔法(magic)详解6.1.基本魔法(magic)6.2.无魔法(no magic)6.3.深度魔法(very magic) 7.正则表达式举例7.1.精确匹配单词7.2…

爬虫与DataFrame对象小小结合

import pandas as pd import requests from lxml import etree #数据请求 url"https://www.maigoo.com/brand/list_1715.html" headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari…

在Linux和Docker中使用nohup进行后台任务管理

在Linux和Docker中使用nohup进行后台任务管理 一、nohup应用场景二、nohup命令三、后台任务管理3.1 列出后台任务jobs3.2 后台任务转前台fg3.3 删除后台任务kill 一、nohup应用场景 在Linux操作系统&#xff08;Deepin、Ubuntu&#xff09;中&#xff0c;经常需要将程序长时间…

题目 2120: T1312-昆虫繁殖

题目描述: 科学家在热带森林中发现了一种特殊的昆虫&#xff0c;这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵&#xff0c;每对卵要过两个月长成成虫。假设每个成虫不死&#xff0c;第一个月只有一对成虫&#xff0c;且卵长成成虫后的第一个月不产卵(过X个月产卵)&#xf…

GPT实战系列-一种构建LangChain自定义Tool工具的简单方法

GPT实战系列-一种构建LangChain自定义Tool工具的简单方法 LLM大模型&#xff1a; GPT实战系列-探究GPT等大模型的文本生成 GPT实战系列-Baichuan2等大模型的计算精度与量化 GPT实战系列-GPT训练的Pretraining&#xff0c;SFT&#xff0c;Reward Modeling&#xff0c;RLHF …