题目

0-1背包问题,问要求体积不小于V的情况下的最小价值是多少。

相关

转移方程很容易想,初始化的处理还不够熟练,可能还可以更简明。

使用一维dp数组。

代码

import java.util.Scanner;

public class Main{
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int V = sc.nextInt();
int[] v = new int[n + 1];
int[] w = new int[n + 1];
int vSum = 0;
for (int i = 1; i <= n; ++i) {
v[i] = sc.nextInt();
w[i] = sc.nextInt();
vSum += v[i];
} int[] dp = new int[V + 1];
dp[0] = 0;
for (int j = 1; j <= V; ++j) {
dp[j] = Integer.MAX_VALUE;
}
for (int i = 1; i < n + 1; ++i) {
for (int j = V; j >= v[i]; --j) {
if (dp[j] == Integer.MAX_VALUE && dp[j - v[i]] == Integer.MAX_VALUE) {
dp[j] = Integer.MAX_VALUE;
} else if (dp[j] == Integer.MAX_VALUE) {
dp[j] = dp[j - v[i]] + w[i];
} else if (dp[j - v[i]] == Integer.MAX_VALUE) {
dp[j] = dp[j];
} else {
dp[j] = Math.min(dp[j], dp[j - v[i]] + w[i]);
}
}
for (int j = v[i] - 1; j >= 0; --j) {
dp[j] = Math.min(dp[j], w[i]);
}
} System.out.println(dp[V]);
}
}

[算法]体积不小于V的情况下的最小价值(0-1背包)的更多相关文章

  1. 混合模式程序集是针对“v1.1.4322”版的执行时生成的,在没有配置其它信息的情况下,无法在 4.0 执行时中载入该程序集。

    看到一个kinect大牛编写的一个水果忍者的体感游戏版本号,让我为自己一直以来仅仅用现有的网页游戏来模拟kinect体感游戏控制感到羞愧,没办法.我还是菜鸟.学习一段后自己模仿星际大战这个游戏.自己写 ...

  2. 搞定面试官 - 你可以介绍一下在 MySQL 中,哪些情况下 索引会失效嘛?

    大家好,我是程序员啊粥,前边给大家分享了 *MySQL InnoDB 索引模型 在 MySQL InnoDB 中,为什么 delete 删除数据之后表数据文件大小没有变 如何计算一个索引的长度 如何查 ...

  3. MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?

    本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...

  4. 冒泡法的算法最佳情况下的时间复杂度为什么是O(n)

    我在许多书本上看到冒泡排序的最佳时间复杂度是O(n),即是在序列本来就是正序的情况下. 但我一直不明白这是怎么算出来的,因此通过阅读<算法导论-第2版>的2.2节,使用对插入排序最佳时间复 ...

  5. Mysql在高并发情况下,防止库存超卖而小于0的解决方案

    背景: 本人上次做申领campaign的PHP后台时,因为项目上线后某些时段同时申领的人过多,导致一些专柜的存货为负数(<0),还好并发量不是特别大,只存在于小部分专柜而且一般都是-1的状况,没 ...

  6. Java之HashMap在多线程情况下导致死循环的问题

    PS:不得不说Java编程思想这本书是真心强大.. 学习内容: 1.HashMap<K,V>在多线程的情况下出现的死循环现象   当初学Java的时候只是知道HashMap<K,V& ...

  7. 如何在命令长度受限的情况下成功get到webshell(函数参数受限突破、mysql的骚操作)

    0x01 问题提出 还记得上篇文章记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门),我们讲到了一些PHP的一些如何巧妙地绕过数字和字母受限的技巧,今天我要给大家分享的是如 ...

  8. 多线程情况下HashMap死循环的问题

    1.多线程put操作后,get操作导致死循环. 2.多线程put非null元素后,get操作得到null值. 3.多线程put操作,导致元素丢失. 死循环场景重现 下面我用一段简单的DEMO模拟Has ...

  9. 无归档情况下使用BBED处理ORA-01113错误

    在丢失归档情况下,恢复时常会遇到ora-01113错误,以下实验模拟表空间offline,然后在丢失归档文件的情况下使用BBED修改文件头信息,最后恢复数据文件: 数据库版本: SQL> sel ...

随机推荐

  1. 攻防世界-web(进阶)-NaNNaNNaNNaN-Batman

    用winhex打开,发现是一个javascript代码.将文件重命名为html文件,用浏览器打开. 打开是一个输入框,输入任何东西都梅反应,尝试弹框输入也无果,继续查看代码. 查看代码,可以看到最开始 ...

  2. 【UVa1635】Irrelevant Elements - 唯一分解定理

    题意 给你 \(n\) 个数,每次求出相邻两个数的和组成新数列.经过 \(n-1\) 次操作后,得到一个数.求这个数 \(mod \ m\) 与哪些项无关. 如:当 \(m=2 \ , \ n=2\) ...

  3. MSDN 无法显示的问题 2010-03-21 21:08

    MSDN 无法显示的问题regsvr32 "C:\Program Files\Common Files\Microsoft Shared\Help\hxds.dll" .试图运行项 ...

  4. java.lang.NoSuchFieldError: No static field XXX of type I in class Lcom/XX/R$id; or its superclasses

    报错: 当启动一个页面的时候报错: java.lang.NoSuchFieldError: No static field XXX of type I in class Lcom/XXX/R$id; ...

  5. Oracle 根据单元格内容不同来判断不同条件

    select xxx,xxx from xxx where decode(AAA,0,BBB,1,CCC)='12345' 如果AAA字段等于0则AAA=''12345' 否则如果BBB字段等于1则B ...

  6. scp 转

    linux之cp/scp命令   名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 说明 ...

  7. Mac本软件安装之后打不开的解决办法

    Mac本软件安装之后打不开的解决办法 MacOS系统版本10.15.3 一,安装Axure RP 9 问题:安装之后打不开 提示“Axure RP 9已损坏,无法打开”或“打不开 Axure RP 9 ...

  8. pandas 数据库数据的读取

    绝大多数公司都会选择将数据存入数据库中,因为数据库既可以存放海量数据,又可以非常便捷地实现数据的查询.下面以MySQL和SQL Server为例,来练习Pandas模块和 对应的数据库模块. 首先需要 ...

  9. 牛客网PAT练习场-数素数

    题解:就是一道素数筛选法 题目地址:https://www.nowcoder.com/questionTerminal/e0fb49acb75f47e8b6fa2077d9071799 /** * C ...

  10. 科普,想成为厉害的 Java 后端程序员,你需要懂这 13 个知识点

    老读者就请肆无忌惮地点赞吧,微信搜索[沉默王二]关注这个在九朝古都洛阳苟且偷生的程序员.本文 GitHub github.com/itwanger 已收录,里面还有我精心为你准备的一线大厂面试题. 站 ...