0-1背包问题
package org.niuke.solution77;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] p = new int[n + 1];
int[] a = new int[n + 1];
int[] q = new int[n + 1];
int[] b = new int[n + 1];
for(int i = 1; i <= n; i++){
String[] line = br.readLine().split(" ");
p[i] = Integer.parseInt(line[0]);
a[i] = Integer.parseInt(line[1]);
q[i] = Integer.parseInt(line[2]);
b[i] = Integer.parseInt(line[3]);
}
// int[][] dp=new int[n+1][121];
// for(int i=1;i<=n;i++){
// for(int j=0;j<=120;j++){
// dp[i][j]=dp[i-1][j];
// if(j>=p[i]) dp[i][j]=Math.max(dp[i][j],dp[i-1][j-p[i]]+a[i]);
// if(j>=q[i]) dp[i][j]=Math.max(dp[i][j],dp[i-1][j-q[i]]+b[i]);
// }
// }
// System.out.println(dp[n][120]);
int[] dp = new int[121];
for(int i = 1; i <= n; i++){
for(int j = dp.length - 1; j >= 0; j--){
if(j >= p[i]){
dp[j] = Math.max(dp[j], dp[j - p[i]] + a[i]);
}
if(j >= q[i]){
dp[j] = Math.max(dp[j], dp[j - q[i]] + b[i]);
}
}
}
System.out.println(dp[120]);
}
} 
京公网安备 11010502036488号