51Nod-1085-背包问题
来源:互联网 发布:java整形转换为字符串 编辑:程序博客网 时间:2024/05/30 23:08
51Nod-1085-背包问题
1085 背包问题在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。Input第1行,2个整数,N和W中间用空格隔开。N为物品的数量,W为背包的容量。(1 <= N <= 100,1 <= W <= 10000)第2 - N + 1行,每行2个整数,Wi和Pi,分别是物品的体积和物品的价值。(1 <= Wi, Pi <= 10000)Output输出可以容纳的最大价值。Input示例3 62 53 84 9Output示例14
解题方法
一道标准的01背包模板题。
解这道题需要背包的基本知识。而背包又属于动态规划。故而要需要先认识动态规划,然后再学习背包问题。
下面的解题代码是用一维来写的,二维转化一维不懂的可以看看我写的这篇博客——对基础背包的公式理解
解题代码
#基础背包一维核心代码def Basepack(A, V, cost, weight): #循环变量v从V到cost逐渐递减 for v in range(V, cost-1, -1): A[v] = max(A[v], A[v-cost] + weight)while True: try: N, V = list(map(int, input().split())) A = [0]*10010 B = [] #把花费与价值放入一个列表里并且把该列表存入列表B中 for i in range(N): B.append(list(map(int, input().split()))) # *B[i]即B[i][0], B[i][1]即把B[i]这个表拆解 for i in range(N): Basepack(A, V, *B[i]) print(A[V]) except EOFError: break
阅读全文
0 0
- 51Nod-1085-背包问题
- 51Nod-1085-背包问题
- 51nod 1085 背包问题
- 51nod 1085 背包问题
- 51Nod--1085背包问题
- 51nod 1085 背包问题
- 51Nod 1085 背包问题
- 51Nod 1085 背包问题
- 51nod 1085 背包问题
- 51nod 1085 背包问题
- 【51nod 1085 背包问题】
- 51nod 1085 背包问题
- 51Nod-1085 背包问题
- 51nod--1085--背包问题
- 51nod 1085 背包问题
- 51Nod 1085 背包问题
- 51nod 1085 背包问题【01背包】
- 51nod 1085 背包问题【01背包】
- 一张图搞懂android事件分发机制
- http1.0 和 http1.1区别?
- 关于mysql中使用枚举类型还是int类型存取有限个固定值
- java大数算法完成五则运算之加减
- spark-streaming 读取kafka的方式
- 51Nod-1085-背包问题
- springboot + mongodb 查询实例
- vs2017无法查找或打开 pdb 文件
- microsoft visual c++ 6.0中文版两种使用方法
- 说说单例模式
- 关于springMVC无法加载静态资源的问题
- springMVC原理(二):SpringMVC核心分发器DispatcherServlet分析[附带源码分析]
- 530_自定义彩色进度条SeekBar
- 字符串问题---回文最小分割数