问题描述
有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
输入格式
第一行为一个整数,表示箱子容量;
第二行为一个整数,表示有n个物品;
接下来n行,每行一个整数表示这n个物品的各自体积。
输出格式
一个整数,表示箱子剩余空间。
样例输入
24
6
8
3
12
7
9
7
样例输出
0
这是一个背包问题,用动态规划来解
import java.util.Scanner;public class Main {private static int[][] dpOne;private static int[] dpTwo;public static void main(String[] args) {Scanner in = new Scanner(System.in);int V = in.nextInt();int n = in.nextInt();dpOne = new int[n + 1][V + 1];int[] v = new int[n + 1];for (int i = 1; i <= n; i++) {v[i] = in.nextInt();}in.close();MethodOne(n, v, V);System.out.println(V - dpOne[n][V]);dpTwo = new int[V + 1];MethodTwo(n, v, V);System.out.println(V - dpTwo[V]);}/** 用二维数组来存储 前n个物品放入体积为V的背包中,对于每个物品,如果不取,dp[i][j] = dp[i -* 1][j]即前n-1个物品来装体积为V的这个背包 如果取,dp[i][j] = dp[i - 1][j - v[i]] + v[i]即前n* -1个物品来装体积为V - v[i]的这个背包*/private static void MethodOne(int n, int[] v, int V) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= V; j++) {if (j >= v[i]) {dpOne[i][j] = Integer.max(dpOne[i - 1][j], dpOne[i - 1][j - v[i]] + v[i]);} else {dpOne[i][j] = dpOne[i - 1][j];}}}}/** 用一维数组来存储 对于每个物品都有取和不取两个状态,如果不取,dp[j]不变,如果取dp[j] = dp[j - v[i]] + v[i]*/private static void MethodTwo(int n, int[] v, int V) {for (int i = 1; i <= n; i++) {for (int j = V; j > 0; j--) {if (j >= v[i]) {dpTwo[j] = Integer.max(dpTwo[j], dpTwo[j - v[i]] + v[i]);}}}}
}

蓝桥杯 ALGO-21算法训练 装箱问题 java版相关推荐

  1. 蓝桥杯:试题 算法训练 Remember the A La Mode

    蓝桥杯:试题 算法训练 Remember the A La Mode 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Hugh Samston经营着一个为今年的ICPC世界总决赛的参 ...

  2. 矩阵乘法 算法训练 试题_蓝桥杯习题集_ 算法训练 矩阵乘法

    原文: 算法训练 矩阵乘法 时间限制:1.0s   内存限制:512.0MB 问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s, ...

  3. java蓝桥杯的题_Java蓝桥杯试题集——算法训练ALGO-116——最大的算式

    题目要求 解题思路 动态规划,今天才弄明白QAQ,借鉴了这位大佬的博客,曹磊的博客 写的很好!但是我觉得我的循环方式更容易理解嘿嘿嘿~ 首先建立如下图的数组,行数代表前几位数,列数代表有几个乘号.将第 ...

  4. 蓝桥杯 ALGO-83 算法训练 阶乘 java版

    问题描述 一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积.阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中:而35!就更大了,它已经无法存放在一个浮点型变量 ...

  5. 蓝桥杯练习系统算法训练习题加答案java版本

    附上百度文库的链接:http://wenku.baidu.com/view/afb78d36b42acfc789eb172ded630b1c59ee9bf7 转载于:https://www.cnblo ...

  6. 蓝桥杯练习系统—算法训练 s01串

    第一部分:题目 问题描述 s01串初始为"0" 按以下方式变换 0变1,1变01 输入格式 1个整数(0~19) 输出格式 n次变换后s01串 样例输入 3 样例输出 101 数据 ...

  7. 蓝桥杯:试题 算法训练 采油区域 矩阵前缀和+动态规划+分治+枚举

    资源限制 时间限制:2.0s 内存限制:512.0MB 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M× ...

  8. 蓝桥杯-黑色星期五(算法训练)

    题目描述: 有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是"诸事不宜".请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是1 ...

  9. 【算法】【蓝桥杯】试题 算法训练 黑心药商 ALGO-1002

    题目 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 JiaoShou消灭了百变怪,为爱琳世界赢得了和平,但他突然发现自己没有升级,这就意味着必须去喝药补血.爱琳世界的NPC卖的药已 ...

最新文章

  1. exe反编译_反编译Python生成exe软件(Py3-polySML)
  2. Android Gradle manifestPlaceholders 占位符详解
  3. 基于dreamweaver软件设计和开发一网站_基于 abp vNext 和 .NET Core 开发博客项目 Blazor 实战系列(一)...
  4. 设计模式之禅读书笔记
  5. 爱奇艺CEO龚宇呼吁网络电影涨价:6块钱太低了
  6. Java中的Math类和日期类详解
  7. 仓库保管工计算机试题,仓库保管工中级试卷答案.doc
  8. mac 自带连接ftp服务器,Mac自带FTP工具使用
  9. 利用ARCGIS制作MIKE21边界文件
  10. PHP利用有道智云提供的API接口来翻译字符串
  11. 联通光猫IPV6配置
  12. 科学与财富杂志科学与财富杂志社科学与财富编辑部2022年第27期目录
  13. mysql blast2go_blast2go本地化教程
  14. jQuery weui Select组件显示指定值
  15. Vue中使用纯CSS实现全屏网格加渐变色背景布局
  16. 递归遍历文件夹,递归解压,压缩文件,写解压和压缩过程的日志,
  17. 网页中 BarcodeReader.js 识别商品条形码
  18. Android中Intent.setAction简单使用
  19. 分享一个美团大佬的面试笔记 - MySQL 30 问与答
  20. 计算机专业英语作业1,计算机专业英语作业(1)

热门文章

  1. Android开发学习之仿手机QQ消息列表侧滑删除效果
  2. php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项
  3. 跨服务器查询信息的sql
  4. Quartz总结(四):动态修改定时器二
  5. 主流视频客户端核心代码的实现
  6. apache自定义虚拟主机日志格式
  7. MYSQL 主从复制读写分离实现
  8. 10条建议让你创建更好的jQuery插件(转载)
  9. 第二十三届高交会闭幕 奇安信三项产品获评“优秀产品奖”
  10. 详解苹果 macOS Mail 中的零点击漏洞