【背包问题】01背包问题-白书350页-例9.11

                                   01背包问题
【试题描述】一个旅行者有一个最多能装M公斤的背包,现在有n件物品,
它们的重量分别是W1,w2....Ww.
它们的价值分别为Cl1,C2 ,... Cn ,求旅行者能获得最大总价值。
【输入格式】
第1行:两个整数,M(背包容量,M<=200)和N(物品数量,N<=30);
第2至N+1行:每行两个整数Wi,Ci,表示每个物品的重量和价值。
【输出格式】
仅一行,一个数,表示最大总价值。
【输入样例】      【输出样例】
10 4                       12
 2  1
 3 3
 4 5
 7 9
 
【样例解析】
依据样例可以画出2个表格:
(1)价值表:每件物品自己的容量和价值。
(2)装在四件物品后最大价值表:f[n][m]表格。nxm :4行10列的表格。
(3)在这个动态规划跑完一遍后,f[4][10] 表格中最后一个,就是都放入4件物品后的最大价值。

(4)外循环是物品种类,内循环是每一列放置物品的空间。故f[i][v]表示第i件物品放入容量为V的背包(表格)中产生当前最大价值,即:

f[i][v]=max{f[i-1][v],f[i-1][v-wi]+c[i]};

 

 动态规划和图论(floyed)算法等多种难度大的算法,其实就是处理二维关系表的问题。

0/1背包 模板题:  P1048采药、P1060开心的金明

只要学生们掌握二重循环+二维数组,自己手推能力强+理解性好,要逐步养成自学能力!

 

posted on 2019-01-03 10:49  lcdxjsj  阅读(209)  评论(0)    收藏  举报

导航