动态规划中 简单的01背包问题~
全部代码:
import java.util.ArrayList;
import java.util.Scanner;
import static java.lang.Math.max;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> sj = new ArrayList<>();
ArrayList<Integer> jz = new ArrayList<>();
int T = sc.nextInt();
int M = sc.nextInt();
sj.add(0);jz.add(0);
int[][] f = new int[101][1001];
for (int i = 1; i <= M; i++) {
sj.add(sc.nextInt());
jz.add(sc.nextInt());
}
for (int i = 1; i <= M; i++) {
for (int j = 0; j <= T; j++) {
f[i][j] = f[i - 1][j];
if (j >= sj.get(i)) {
f[i][j] = max(f[i][j], f[i - 1][j - sj.get(i)] + jz.get(i));
}
}
}
System.out.println(f[M][T]);
}
}
注:
- 因为后续for循环都是从1开始 所以每个arraylist集合中都要把一个数放在第一个 不一定要和我一样都添加0噢~