题目描述:
一个旅行者有一个最多能装 M 公斤的背包,现在有 n 件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn,求旅行者能获得最大总价值。
代码:
package lanqiao;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] w = new int[202];
int[] c = new int[202];
int[][] arr = new int[202][202];
int m = sc.nextInt(); //背包容量
int n = sc.nextInt(); //物品数量
for(int i = 1;i <= n;i ++)
{
w[i] = sc.nextInt();
c[i] = sc.nextInt();
}
for(int i = 1;i <= n;i ++)
{
for(int j = 1;j <= m;j ++)
{
if(w[i] > j){
arr[i][j] = arr[i - 1][j];
}
else{
arr[i][j] = Math.max(arr[i - 1][j],arr[i - 1][j - w[i]] + c[i]);
}
}
}
System.out.println(arr[n][m]);
}
}