蓝桥杯刷题第二天——背包问题

devtools/2025/1/19 15:49:13/

题目描述

有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是Vi价值是Wi。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。

输入格式

第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。
接下来有N行,每行两个整数,W,用空格隔开,分别表示第件物品的体积和价值。

输出格式

输出一个整数,表示最大价值。

数据范围

0< N,V≤ 1000
0<v,W≤1000

解题思路

此题可用动态规划来解决。

1.首先定义一个二维数组组dp[i][j],表示前i个物品放入容量为j的背包中能获得的最大价值。

2.状态转移方程为:dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]],其中v[i] 和 w[i] 分别是第i个物品的体积和价值。这个方程的含义是,对于第i个物品,有两种选择:不放入背包(价值为dp[i-1][j]),或者放入背包(价值为dp[i-1][j-v[i]]+w[i]),取两者中的较大值。

3.边界条件:当i=或=时,dp[i][j]=,即没有物品或者背包容量为0时,最大价值为 0。

代码示例

N, V = map(int, input().split())
dp = [[0] * (V + 1) for _ in range(N + 1)]
for i in range(1, N + 1):v, w = map(int, input().split())for j in range(1, V + 1):dp[i][j] = dp[i - 1][j]if j >= v:dp[i][j] = max(dp[i][j], dp[i - 1][j - v] + w)
print(dp[N][V])

结果展示


http://www.ppmy.cn/devtools/151847.html

相关文章

游戏引擎学习第79天

当前任务回顾 我们目前的工作重点是碰撞检测的更新&#xff0c;特别是将游戏的世界表示方式扩展到三维空间。尽管游戏本身是二维的&#xff0c;但我们希望它能够在三维空间中处理更多的内容&#xff0c;以支持那些需要考虑高度的游戏元素&#xff0c;如楼层、台阶等。我们的目…

青少年CTF练习平台 文章管理系统(sqlmap使用os-shell找flag)PHP

题目 点击下一篇出现参数id&#xff0c;单引号报错 找到注入点启动sqlmap 用sqlmap的os-shell执行命令获取flag python sqlmap.py -u http://challenge.qsnctf.com:32372/?id1 --os-shell 执行命令查找flag find / -name flag* find / -name *flag 发现/flag目录&#xff0c…

如何在谷歌浏览器中设置自定义安全警告

随着网络环境的日益复杂&#xff0c;浏览器的安全问题也愈发引人关注。谷歌浏览器作为一款广泛使用的浏览器&#xff0c;其自定义安全警告功能为用户提供了更加个性化和安全的浏览体验。本文将详细介绍如何在谷歌浏览器中设置自定义安全警告&#xff0c;帮助用户更好地保护自己…

【C++】揭秘类与对象的内在机制(核心卷之深浅拷贝与拷贝构造函数的奥秘)

文章目录 一、前置知识---深浅拷贝1. 浅拷贝2. 深拷贝 1. 拷贝构造函数1. 默认生成的拷贝构造函数能干什么&#xff1f;2. 怎么写拷贝构造函数 前景提要&#xff1a;该篇文章的内容接上一篇&#xff0c;希望大家可以先学习上一篇文章讲到的构造函数和析构函数&#xff0c;否则可…

认识软件测试 - 软实力面试题

目录 1. 什么是测试 1.1 简单认识测试 1.2 为什么需要测试 1.3 软件测试的定义 2. 测试的岗位有哪些 2.1 面试题 [HR 面]: 测开和测试的区别是什么? 3. 软件测试 和 软件开发 3.1 测试和调试的区别 3.2 面试题: 走测试岗位为什么还要学开发知识? 4. 优秀软件测试人…

stm32控制直流电机程序

在STM32微控制器上控制直流电机通常涉及使用PWM&#xff08;脉宽调制&#xff09;信号来调节电机的速度&#xff0c;并通过GPIO&#xff08;通用输入输出&#xff09;端口来控制电机的启动、停止和方向。以下是一个简化的STM32控制直流电机的程序示例&#xff0c;该程序使用STM…

向harbor中上传镜像(向harbor上传image)

向 Harbor 中上传镜像通常分为以下几个步骤&#xff1a; 1、登录 Harbor 2、构建镜像 3、标记镜像 4、推送镜像到 Harbor 仓库 1、登录 Harbor 首先&#xff0c;确保你已经能够访问 Harbor&#xff0c;并且已经注册了账户。如果还没有 Harbor 账户&#xff0c;你需要先注册一…

Jenkins质量门禁设计方案的深入探讨

Jenkins作为一个开源的自动化服务器&#xff0c;它通过简化持续集成和持续交付流程&#xff0c;使得软件测试变得更加高效。质量门禁设计方案结合了Jenkins的以下几项核心功能&#xff1a; 持续集成&#xff08;CI&#xff09; &#xff1a;通过自动化构建和测试&#xff0c;提…