码迷,mamicode.com
首页 > 其他好文 > 详细

【日常学习】【背包DP】codevs1014 装箱问题题解

时间:2015-08-08 12:05:52      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:日常学习   动态规划   背包dp   

转载请注明出处 来自CSDN用户ametake 
题目来自NOIP2011PJ4
上题目
题目描述 Description

有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。

要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。

输入描述 Input Description

一个整数v,表示箱子容量

一个整数n,表示有n个物品

接下来n个整数,分别表示这个物品的各自体积

输出描述 Output Description

一个整数,表示箱子剩余空间。

样例输入 Sample Input

24

6

8

3

12

7

9

7

样例输出 Sample Output

0


这道题我们可以用最朴素的二重循环背包完成,但在这里学习到的是空间复杂度O(N)的一维背包DP

简明解释:我们省略f[i][v],用f[v]表示第i次循环时容量为v时最大价值,即表示f[i][v]。由于f[i][v]要由f[i-1][v-ci]推过来,因此必须采用倒着推,才能保证在我们求f[v]时,f[v-ci]中存储的是f[i-1][v-ci]而非f[i][v-ci]。
对于这道题,我们只需要把体积同时当做体积和价值即可。
那么代码君



入了很多书,很多都要看,但更重要的还是好好学习好好写作业刷题。
上上次在诸城一中还是漏了一句诗,那么这次两句
——山外青山楼外楼,西湖歌舞几时休?
——似此星辰非昨夜,为谁风露立中宵

版权声明:本文为博主原创文章,未经博主允许不得转载。

【日常学习】【背包DP】codevs1014 装箱问题题解

标签:日常学习   动态规划   背包dp   

原文地址:http://blog.csdn.net/ametake/article/details/47356725

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!