AcWing:3.完全背包问题
有 NN 种物品和一个容量是 VV 的背包,每种物品都有无限件可用。
第 ii 种物品的体积是 vivi,价值是 wiwi。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。
输入格式
第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。
接下来有 NN 行,每行两个整数 vi,wivi,wi,用空格隔开,分别表示第 ii 种物品的体积和价值。
输出格式
输出一个整数,表示最大价值。
数据范围
0<N,V≤10000<N,V≤1000
0<vi,wi≤10000<vi,wi≤1000
输入样例
4 5
1 2
2 4
3 4
4 5
输出样例:
10
思路:
dp[i]表示体积小于i的所有方案中的价值最大值
提交的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args)
{
int m,n;
Scanner sc = new Scanner(System.in);
m = sc.nextInt();//物品数量
n = sc.nextInt();//背包容量
int i,j;
int dp[] = new int[n+1];
int weight[] = new int[m+1];
int value[] = new int[m+1];
for(i=1;i<=m;i++)
{
weight[i] = sc.nextInt();
value[i] = sc.nextInt();
}
for(i=1;i<=m;i++)
{
for(j=weight[i];j<=n;j++) //例如现在物品的体积为3,dp[3]=max(dp[3], dp[0]+value[i]),dp[6]=max(dp[6], dp[3]+value[i])
//dp[9]=max(dp[9], dp[6]+value[i]),所以同一物品选取多次的情况已经考虑到了
{
dp[j]=Math.max(dp[j], dp[j-weight[i]]+value[i]);
}
}
System.out.println(dp[n]);
}
}
AcWing:3.完全背包问题相关推荐
- 【AcWing】AcWing 2. 01背包问题
目录 一.题目 1.原题链接 2.题目描述 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 一.题目 1.原题链接 2. 01背包问题 - AcWing题库 2.题目描述 有 N 件物品和一 ...
- [AcWing] 9. 分组背包问题(C++实现)分组背包问题模板题
[AcWing] 9. 分组背包问题(C++实现)分组背包问题模板题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 ...
- ACwing 5. 多重背包问题 II(二进制拆分+DP)
文章目录 1. 题目 2. 解题 1. 题目 有 N 种物品和一个容量是 V 的背包. 第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使物品体积总和不超过 ...
- ACwing 3. 完全背包问题(DP)
文章目录 1. 题目 2. 解题 1. 题目 有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用. 第 i 种物品的体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使这些物品的总体 ...
- ACwing 4. 多重背包问题 I(DP)
文章目录 1. 题目 2. 解题 1. 题目 有 N 种物品和一个容量是 V 的背包. 第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使物品体积总和不超过 ...
- ACwing 2. 01背包问题(DP)
文章目录 1. 题目 2. 解题 1. 题目 有 N 件物品和一个容量是 V 的背包.每件物品只能使用一次. 第 i 件物品的体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使这些物品的总体积 ...
- AcWing 9. 分组背包问题(分组背包模板)
题目连接 https://www.acwing.com/problem/content/description/9/ 思路 对于一个组里面的物品只能选一个我们可以通过集合划分的方式来看待这个问题,f[ ...
- AcWing 5. 多重背包问题 II(二进制优化)
题目链接 https://www.acwing.com/problem/content/5/ 思路 part1 受了完全背包和01背包的启发我们不难想到,一种高效的方法来优化,我们讲物品的次数做一个二 ...
- AcWing 4. 多重背包问题(多重背包 朴素版)
题目链接 https://www.acwing.com/problem/content/4/ 思路 对于每一个物品我们在选择的时候是有限制的,所以我们进行选择的时候需要枚举一下可以选择的情况,注意的是 ...
- AcWing 3. 完全背包问题(完全背包模板)
题目链接 https://www.acwing.com/problem/content/3/ 思路 对于每一个物品我们可以选择无数次,那么我们可以直接枚举到V这个范围去,但是没必要,我们发现滚动优化后 ...
最新文章
- 突发!Spring Cloud 爆高危漏洞。。赶紧修复!!
- 薪资1.5万,学习IT让我重新找到方向
- 4.24企业数据库应用实践技术沙龙
- 编写一个watchdog.sh脚本_五大原因!为何要将Jupyter Notebook转换为python脚本?
- 【人工智能】【深度学习】初学者如何选出最适合自己深度学习框架?
- Redis哈希表总结
- python安卓自动化实现方法_带你用 Python 实现自动化群控(入门篇)
- HTML示例07---图像与超链接
- python从入门到精通-100G Python从入门到精通全套资料!
- Microsoft Office/visio/Project 2013 with SP1 简体中文零售版
- 解决从PDF复制到Word中的英文字母变成宋体格式的问题
- 飞猪IP-代理-换IP作用
- npy/npz/pkl/csv长字符串存储
- 末学者笔记--Python函数三玄
- html中背景简写,css中background简写属性
- pythonif嵌套语句题目_python中if嵌套的练习题有哪些?
- java如何为图片加水印
- 打开或关闭windows功能时,提示“出现错误。并非所有的功能被成功更改” 已解决
- 【Windows10+Ubuntu22.04双系统 华硕主板 B660M-plus 装机个人总结】
- idea出现Undo Set language level to 6 - @Override in interfaces?
热门文章
- LeetCode 687. 最长同值路径(二叉树,递归)
- LeetCode 33. 搜索旋转排序数组(二分查找)
- LeetCode 1021. 删除最外层的括号(栈)
- POJ 1028 浏览器前进后退(双栈)
- c++ 航空管理系统_浅谈航站楼能源管理系统的设计与应用
- 利用numpy删除DataFrame某一行/列、多行内容
- TCP程序流程及服务器客户端
- python中的随机函数random
- springboot整合kafka_springboot整合kafka实现消息的发送消费
- 斯坦福CS224n追剧计划【大结局】:NLP和深度学习的未来