解题思路
不过这种方式是有序的,而不是无序的。
相关代码
import java.util.Scanner;
public class Main{
static long f[] = new long[1010];
static int v[] = new int[1010];
static int w[] = new int[1010];
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int V = scan.nextInt();
for(int i=1;i<=N;i++){
v[i] = scan.nextInt();
w[i] = scan.nextInt();
}
f[0] = 0;
//f[i] 不超过i的体积的最大价值
for(int i=0;i<=V;i++){
for(int j=1;j<=N;j++){
if(i>=v[j])
f[i] = Math.max(f[i-v[j]]+w[j],f[i]);
}
}
System.out.println(f[V]);
}
}