01背包
import java.util.*;
import java.lang.*;
public class Main{
static int[] v = new int[1010];
static int[] w = new int[1010];
static int[] f = new int[1010];
public static void main(String[] args){
int n,m;
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
m = scanner.nextInt();
for(int i = 1; i <= n; i++){
v[i] = scanner.nextInt();
w[i] = scanner.nextInt();
}
for(int i = 1; i <=n; i++){
for(int j = m; j >=v[i]; j--){
f[j] = Math.max(f[j], f[j - v[i]] + w[i]);
}
}
System.out.println(f[m]);
}
}
完全背包
import java.util.*;
import java.BigInteger;
import java.lang.*;
public class Main{
static int N = 1010;
static int[] v = new int[N];
static int[] w = new int[N];
public static void main(String[] args){
int n,m;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
for(int i = 1; i <= n; i++){
v[i] = sc.nextInt();
w[i] = sc.nextInt();
}
for(int i = 1; i <= n; i ++){
for(int j = v[i]; j <= m; j++){
f[j] = Math.max(f[j], f[j - v[i]] + w[i]);
}
}
System.out.println(f[m]);
}
}