就是一个背包01问题,可能部分人用java写的时候数据处理有问题(没错就是我)但把思路捋清楚之后还是非常简单的。
import java.util.Scanner;
public class P1507 {
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
int h=sc.nextInt();
int t=sc.nextInt();
int n=sc.nextInt();
int hi[]=new int[n];
int ti[]=new int[n];
int ki[]=new int[n];
for(int i=0;i<n;i++) {
hi[i]=sc.nextInt();
ti[i]=sc.nextInt();
ki[i]=sc.nextInt();
}
int dp[][]=new int[h+1][t+1];
for(int i=0;i<n;i++)
for(int j=h;j>=hi[i];j--)
for(int k=t;k>=ti[i];k--) {
dp[j][k]=Math.max(dp[j-hi[i]][k-ti[i]]+ki[i], dp[j][k]);
}
System.out.println(dp[h][t]);
}
}