有5个物品,它们有各自的体积和价值,给定容量的背包,计算背包里装入的物品具有最大的价值总和。
输入描述:
宝贝价值:6,3,5,4,6
宝贝重量:2,2,6,5,4
小偷背包容量:10
输出描述:
偷到宝贝的总价值:15
package main;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int[] weight = new int [6];
int[] value = new int [6];
int c;
for(int i=1;i<=5;i++){
weight[i]=in.nextInt();
}
for(int i=1;i<=5;i++){
value[i]=in.nextInt();
}
c = in.nextInt();
int[][] dp=new int[6][c+1];
for(int i=1;i<=5;i++){
for(int j=1;j<=c;j++){
if(j<weight[i]){
dp[i][j] = dp[i-1][j];
}else{
dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i]);
}
}
}
System.out.println(dp[5][c]);
}
private static int max (int v1,int v2){
return v1>v2?v1:v2;
}
}
学习连接:https://blog.youkuaiyun.com/qq_38410730/article/details/81667885