题目描述:
给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个.
代码:
package lanqiao;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int weight = sc.nextInt();
int[] v = new int[num + 1];
int[] w = new int[num + 1];
int[][] dp = new int[num +1][weight + 1];
for(int i = 1;i <= num;i ++)
{
w[i] = sc.nextInt();
v[i] = sc.nextInt();
}
for(int i = 1;i <= num;i ++)
{
for(int j = 1;j <= weight;j ++)
{
if(j < w[i])
{
dp[i][j] = dp[i - 1][j];
}
else{
dp[i][j] = Math.max(dp[i - 1][j],dp[i - 1][j - w[i]] + v[i]);
}
}
}
System.out.println(dp[num][weight]);
}
}