题目的链接在这里:https://www.nowcoder.com/practice/fd55637d3f24484e96dad9e992d3f62e
- 题目大意
- 一、示意图
- 二、解题思路
- 01背包问题
题目大意 你有一个背包,最多能容纳的体积是V。
现在有n个物品,第i个物品的体积为v_iv
i
,价值为w_iw
i
。
(1)求这个背包至多能装多大价值的物品?
(2)若背包恰好装满,求至多能装多大价值的物品?
一、示意图 二、解题思路
01背包问题01背包问题
代码如下:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int V=sc.nextInt();
//这个要放在前面
int[][]dp=new int[n+1][V+1];
int[][]dp1=new int[n+1][V+1];
//对dp1进行初始化 关键就是这个初始化
for(int i=1;i<=V;i++){
dp1[0][i]=Integer.MIN_VALUE;
}
int value[]=new int[n+1];
int w[]=new int[n+1];
int l=1;
int k=n;
while (k-->0){
//弄反了
w[l]=sc.nextInt();
value[l]=sc.nextInt();
l++;
}
//输出两个答案
//然后是初始化 第0个物体 全是0吧
// Arrays.fill(dp[0],0);
//然后开始遍历 所以还是这个遍历出了问题
// int max=0;
for(int i=1;i<=n;i++){
for(int j=0;j<=V;j++){
//前i件物品 放入体积是j的最大价值 那就是选择放 第i件物品还是不放
if(j0)?dp1[n][V]:0;
System.out.println(dp1[n][V]);
}
}


![java 牛客网之[动态规划 简单]NC11 【模板】01背包 java 牛客网之[动态规划 简单]NC11 【模板】01背包](http://www.mshxw.com/aiimages/31/434987.png)
