装箱问题(pack.cpp)

【问题描述】有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0

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

【输入样例】

24

6

8

3

12

7

9

7

【输出样例】

0

样例说明:

24——表示箱子容量

6——表示n个物品

8——n行,分别表示n个物品的体积

312

7

9

7

方法一、使用二维数组f[i][j],表示前i个物品装入容量为j的箱子能获得的最大体积,

动态转移方程: f[i][j]=max(f[i-1][j],f[i-1][j-a[i]]+a[i]);

#include

using namespace std;

int f[31][20001];

int main()

{

freopen("pack.in","r",stdin);

freopen("pack.out","w",stdout);

int V,n,i,j;

cin>>V>>n;

int a[n+1];

for(i=1;i<=n;i++)

cin>>a[i];

for(i=1;i<=n;i++)

for(j=1;j<=V;j++)

{

if(j

f[i][j]=f[i-1][j];

else

f[i][j]=max(f[i-1][j],f[i-1][j-a[i]]+a[i]);

}

cout<

while(1);

return 0;

}

方法二、方法一虽好,但占用内存空间较大,改用一维数组f[j]:

仍表示前i个物品装箱能获得的最大体积。

#include

using namespace std;

int f[20001];//f[j]表示前i个物品装入获得的最大体积

int main()

{

freopen("pack.in","r",stdin);

freopen("pack.out","w",stdout);

int V,n,i,j;

cin>>V>>n;

int a[n+1];

for(i=1;i<=n;i++)

cin>>a[i];

for(i=1;i<=n;i++)

{

for(j=V;j>=1;j--)

{

if(j

装箱问题 动态规划 java_[动态规划]装箱问题相关推荐

  1. 凑零钱动态规划java_动态规划巧解凑零钱问题 | 创作者训练营

    动态规划是运筹学中求最优解的常用手段,解决此类问题的难点在于准确归纳出状态转移方程 状态转移方程,最重要的是先找到状态,然后将「大问题」转换成「小问题」,将「全局问题」转换成「局部问题」.转换的过程用 ...

  2. 凑零钱动态规划java_凑零钱问题-动态规划回溯贪心

    编码乱码问题解释,解决Tomcat乱码的最快速有效办法.[希望能够 编码乱码问题解释,解决Tomcat乱码的最快速有效办法.[希望能够指正] 文章目录 编码乱码问题的自我理解 我们来了解下,程序的执行 ...

  3. 石子合并问题java_动态规划求石子合并问题

    1.问题描述 在一个圆形操场的四周摆放着n 堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分.试设计一个算法,计算出将n堆石子合 ...

  4. 矩阵连乘 动态规划_Java动态规划

    1. 介绍 动态规划典型的被用于优化递归算法,因为它们倾向于以指数的方式进行扩展.动态规划主要思想是将复杂问题(带有许多递归调用)分解为更小的子问题,然后将它们保存到内存中,这样我们就不必在每次使用它 ...

  5. java动态规划装箱问题,最少数量货物装箱问题

    题目描述: 最少数量货物装箱问题_牛客网 有重量分别为3,5,7公斤的三种货物,和一个载重量为X公斤的箱子(不考虑体积等其它因素,只计算重量) 需要向箱子内装满X公斤的货物,要求使用的货物个数尽可能少 ...

  6. 动态规划备忘录方法Java_动态规划和备忘录法的区别

    动态规划算法的基本要素:1最优子结构性质当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质.2重叠子问题性质动态规划算法对每个问题只解一次,将其解保存在一个表格中,当再次需要解此问题时 ...

  7. 钢条分割 动态规划java_【动态规划】初识,钢条切割问题

    正文之前其实动态规划老早之前就看过, 但是可惜的是印象不深,到今天彻底忘得差不多了,这两天看<算法导论>终于让我啃下了二叉搜索树和红黑树两个家伙,虽然还未曾熟练于胸,但是基本能用了...现 ...

  8. 买书动态规划java_《编程之美》买书问题——动态规划

    问题描述: 在节假日的时候,书店一般都会做促销活动.由于<哈利波特>系列相当畅销,店长决定通过促销活动来回馈读者.上柜的<哈利波特>平装本系列中,一共有五卷.假设每一卷单独销售 ...

  9. 动态规划石子排序java_动态规划之石子归并

    题目:有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量 和w[i]+w[i+1].问安排怎样的合并顺序,能够使得总合并代价达到最小. 输 ...

最新文章

  1. Spring Boot 关于 @EnableConfigurationProperties 注解 —— 使用 @ConfigurationProperties 注解的类生效。
  2. 两步设置:visual studio code(vscode)如何设置文本自动换行
  3. The Human Touch 将人工智能和机器人用于病人工作的实际和伦理意义
  4. python基于百度接口的语音识别_Python基于百度接口的语音识别
  5. ckeditor_4.5.10_full,ckfinder_aspnet_2.6.2,插件使用
  6. mysql groupby 日期_sql 语言 groupBy 分组统计时间段解决方案
  7. VS2010安装异常中断后无法安装的解决方法(安装时发生严重错误)
  8. (三)SpringBoot之配置文件详解:Properties和YAML
  9. Python一键生成国庆出行攻略,助你出门远游嗨不停!
  10. NYOJ最长公共子序列(dp)
  11. redis key操作大全
  12. docker安装nessus方法
  13. 无法连接GitHub完整解决方案
  14. 真机测试无法验证应用
  15. C#getPixel和内存法读取灰度图信息
  16. crypto-music is frequency(INS‘hAck CTF 2018)
  17. 容联云聚客SCRM如何破SCRM保险应用困局
  18. 通过‘PyQt6‘中的QWidget类创建一个含有按钮的窗口 1
  19. 甲骨文欲购市值775亿美元的埃森哲 已聘专家评估
  20. iPhone开发秘笈pdf

热门文章

  1. 创意设计:40幅唯美的卡通插画作品欣赏
  2. DNS解析过程(windows系统举例)
  3. Python的IPy模块
  4. Kotlin基础 build.gradle.kts常见问题之compile
  5. Gradle 从 Groovy 到 KTS 迁移
  6. OpenCV学习6-图像水平翻转、垂直翻转
  7. DMVPN---理论篇-1
  8. 24Java键盘输入涉及方法与具体细节
  9. enclosing type java_java中no enclosing instance of type * is accessible的解决方法
  10. 爱快路由器新建FTP服务