import java.util.Scanner;
public class 背包_动态规划 {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
int n,wi[],vi[],c;
System.out.println("请输入物品的个数");
n=scanner.nextInt()+1;
wi=new int[n+1];
vi=new int[n+1];
for (int i=1;i<n;i++){
System.out.println("请输入第"+i+"件物品重量和价值");
wi[i]=scanner.nextInt();
vi[i]=scanner.nextInt();
}
for (int i=0;i<n;i++){System.out.println("第"+i+"件物品重量 "+wi[i]+"和价值 "+vi[i]);}
System.out.println("请输入背包的大小");
c=scanner.nextInt();
System.out.println("背包能装的最大价值为:");
System.out.println(jiazhi(n,wi,vi,c));
}
public static int jiazhi(int n,int wi[],int vi[],int c){
int [][]value=new int[n][c];
for(int i=1;i<n;i++)
for(int j=1;j<c;j++)
{
if(j<wi[i])
value[i][j]=value[i-1][j];
else
value[i][j]=Math.max(value[i-1][j],value[i-1][j-wi[i]]+vi[i]);
}
return value[n-1][c-1];
}
}