java.lang.NullPointerException
import java.util.Arrays;import java.util.Scanner;public class Test{ int m; //背包最大容量 int n; //商品的种类 Package[] pack ; int f[][] ; Test(){ Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); m = scanner.nextInt(); pack = new Package[n+1]; int[][] f=new int[n+1][m+1]; pack[0]=new Package(); pack[0].pi=0; pack[0].qi=0; pack[0].vi=0;// System.out.println("qwe "+pack[0].pi); for(int i=1;i<=n;i++) { pack[i]= new Package(); pack[i].pi=scanner.nextInt(); pack[i].qi=scanner.nextInt(); pack[i].vi=scanner.nextInt(); }// System.out.println("sads"); System.out.println(knapsack(m,n)); } public static void main(String[] args) { new Test(); } public int knapsack(int m ,int n){ Arrays.sort(pack, 1, pack.length); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { System.out.println(i+" "+j); if(j<=pack[i].qi) { f[i][j]=f[i-1][j]; System.out.println("ww1"); } else { f[i][j]=Math.max(f[i-1][j],f[i-1][j-pack[i].pi]+pack[i].vi); System.out.println("ww2"); } } return f[n][m]; } }class Package implements Comparable<Package>{ int pi=0; int qi=0; int vi=0; Package(int pi,int qi,int vi){ this.pi=pi; this.qi=qi; this.vi=vi; } Package(){ this.pi=0; this.qi=0; this.vi=0; } @Override public int compareTo(Package o) { // TODO Auto-generated method stub return (this.qi-this.pi)-(o.qi-o.pi); } }
程序代码课简化为:for(i=1;i<=n;++i) { for(j=m;j>=g[i].p;--j) { if( j>=g[i].q ) dp[j]=MAX(dp[j],dp[j-g[i].p]+g[i].v); } }