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

题目描述

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

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

输出最大价值。

输入格式

第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。

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

输出格式

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

数据范围

0< N,V≤ 1000

0<v,W≤1000

解题思路

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

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

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

3.边界条件:当i=或=时,dpi[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])

结果展示

相关推荐
AI科技星13 分钟前
全域谱分析:无穷维超复数信息场分形统一场论——自然、量子、金融多重分形第一性原理完整体系(中英双语终稿)
人工智能·python·算法·金融·乖乖数学·全域数学
用户03321266636733 分钟前
使用 Python 在 Word 文档中添加批注
python
蜡笔削薪36 分钟前
财联万业(杭州)数字科技有限公司能否给代理划定独家经营区域?
大数据·人工智能·python·科技
站大爷IP1 小时前
Python的字典合并坑了我三天,原来是踩了这个坑
python
Tbisnic1 小时前
从链式法则到ReLU:梯度消失的数学本质与工程解决方案
python·深度学习·大模型·激活函数·梯度消失
想会飞的蒲公英1 小时前
一个 PyTorch 模型训练的完整流程
人工智能·pytorch·python
c_lb72882 小时前
最新AI量化练习,小策略更适合练流程感
人工智能·python
电化学仪器白超2 小时前
低阻域 ADC 与参考源选型理论分析
人工智能·python·单片机·嵌入式硬件·自动化
AI科技星2 小时前
《01无穷全域信息场论:算子G与宇宙本体高维完备公理大典》
人工智能·python·算法·金融·乖乖数学·全域数学
qzhqbb3 小时前
字节面试分享复盘
面试·职场和发展