🍑 OJ专栏
🍑 宠物小精灵之首府
输入
10 100 5
7 10
2 40
2 50
1 20
4 20
输出
3 30
🍑 01背包滚动数组版 (双体积)
import java.util.Scanner;
public class Main
{
static int N = 1010;
static int[][] f = new int[N][N];
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int V1 = sc.nextInt();// 精灵球数量
int V2 = sc.nextInt();// 皮卡丘体力
int n = sc.nextInt();
for (int i = 0; i < n; i++)
{
int v1 = sc.nextInt();
int v2 = sc.nextInt();
for (int j = V1; j >= v1; j--)
for (int k = V2 - 1; k >= v2; k--)
f[j][k] = Math.max(f[j][k], f[j - v1][k - v2] + 1);
}
System.out.print(f[V1][V2 - 1] + " ");
int k = V2 - 1;
while (k > 0 && f[V1][k - 1] == f[V1][V2 - 1])
{
k--;
}
System.out.println(V2 - k);
}
}