动态规划之背包问题专题

 

问题描述

一个背包,可以放入n种物品,物品j的重量和价值分别为w_j,v_j,j=1,2,\cdots,n,如果背包的最大重量限制是b,怎么样选择放入背包的物品以使得背包的总价值最大?

组合优化问题,设x_j表示装入背包的第j个物品的数量,解可以表示为<x_1,x_2,\cdots,x_n>。那么目标函数和约束条件是:
目标函数:max\sum_{j=1}^{n}v_jx_j \\ 约束条件:\begin{cases} \sum_{j=1}^{n}w_jx_j \le b \\ x_j \in N \end{cases}

1.01背包问题

一个旅行者有一个最多能装 MM 公斤的背包,现在有 nn 件物品,它们的重量分别是W1W2...,WnW1,W2,...,Wn,它们的价值分别为C1,C2,...,CnC1,C2,...,Cn,求旅行者能获得最大总价值?

其中(背包容量,M200M≤200)和(物品数量,N30N≤30);

 

因为只需要记录上一步的值,所以对dp中[i]进行优化

 

 

 

2.完全背包问题

问题描述
设有nn种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为MM,今从nn种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于MM,而价值的和为最大?
其中(背包容量,M200M≤200)和(物品数量,N30N≤30);
 

3.多重背包问题

为了庆贺班级在校运动会上取得全校第一名成绩,班主任决定开一场庆功会,为此拨款购买奖品犒劳运动员。期望拨款金额能购买最大价值的奖品,可以补充他们的精力和体力。

输入:

1) 第一行二个数n(n500)n(n≤500),m(m6000)m(m≤6000),其中nn代表希望购买的奖品的种数,mm表示拨款金额。

2) 接下来nn行,每行33个数,vv、ww、ss,分别表示第I种奖品的价格、价值(价格与价值是不同的概念)和能购买的最大数量(买00件到ss件均可),其中v100v≤100,w1000w≤1000,s10s≤10。



posted @ 2020-11-22 13:42  叮叮007  阅读(120)  评论(0编辑  收藏  举报