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

求解完全背包问题

题目描述

实现一个算法求解完全背包问题。完全背包问题的介绍如下:

  • 已知一个容量为 totalweight 的背包,有不同重量不同价值的物品,问怎样在背包容量限制下达到利益最大化。

  • 完全背包问题的每个物品可以无限选用

背包问题求解方法的介绍如下:

  • 用符号 Vi 表示第 i 个物品的价值,Wi 表示第 i 个物品的体积,Vi,j 表示当前背包容量为 j 时,前 i 个物品最佳组合对应的价值。

  • 对于当前第 i 个商品,如果包的容量能够装下该物品,即 Wij。此时需要判断装或者不装这个物品的价值对比,选择使价值更大的情况,即 Vi,j=max(Vi+Vi−1,jWi,Vi−1,j)

输入描述

第一行为两个数字 otalweightN,均不超过 1000。totalweight 含义见题干,N 为物品数量。

接下来 N 行,每行两个数字 WiVi,均不超过 1000。含义见题干。

输出描述

输出一行,为在背包容量限制下的最大化利益。

输入输出样例

示例

输入
8 5
3 4
5 5
1 2
2 1
2 3
输出
16

运行限制

  • 最大运行时间:1s

  • 最大运行内存: 256M

参考答案

T,N = map(int, input().split())
W = []
V = []
for _ in range(N):a,b = map(int, input().split())W.append(a)V.append(b)
dp = [0]*(T+1)
for i in range(N):for j in range(W[i], T+1):dp[j] = max(dp[j], dp[j-W[i]]+V[i])
print(dp[-1])
http://www.lryc.cn/news/37876.html

相关文章:

  • 我们为什么使用docker 优点 作用
  • Python每日一练(20230311)
  • 202109-3 CCF 脉冲神经网络 66分题解 + 解题思路 + 解题过程
  • Aurora简介
  • 【python实操】用python写软件弹窗
  • Ubuntu 常用操作
  • 井字棋--课后程序(Python程序开发案例教程-黑马程序员编著-第7章-课后作业)
  • 谷粒学院开发(三):统一日志、异常及前端准备工作
  • 华为OD机试题 - 招聘(JavaScript)| 机考必刷
  • 关于SQL优化的几点说明
  • 使用高精度秒表StopWatch测试DateTime.Now的精度
  • 【C++】vector的使用及其模拟实现
  • [洛谷-P2585][ZJOI2006]三色二叉树(树形DP+状态机DP)
  • BI技巧丨计算组
  • PMP项目管理项目范围管理
  • Flink 定时加载数据源
  • ChatGPT、人工智能、人类和一些酒桌闲聊
  • WebRTC开源库内部调用abort函数引发程序发生闪退问题的排查
  • Golang并发编程
  • windows+Anaconda环境下安装BERT成功安装方法及问题汇总
  • git - 简易指南
  • [论文笔记]Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
  • 华为OD机试题 - 找目标字符串(JavaScript)| 机考必刷
  • C++面向对象编程之六:重载操作符(<<,>>,+,+=,==,!=,=)
  • JS_wangEditor富文本编辑器
  • Django实践-06导出excel/pdf/echarts
  • java并发入门(一)共享模型—Synchronized、Wait/Notify、pack/unpack
  • Ast2500增加用户自定义功能
  • 用Python暴力求解德·梅齐里亚克的砝码问题
  • 离散Hopfield神经网络的分类——高校科研能力评价