import java.util.Scanner;
/**
问题描述:
有n件物品和一个承重为m的背包。(每种物品均只有一件)第i件物品的重量是weight[i],价值是value[i]。
求解将哪些物品装入背包可使价值总和最大。
输入样例:
3 10
3 4 5
4 5 6
输出样例:
0 0 0 0 0 0 0 0 0 0 0
0 0 0 4 4 4 4 4 4 4 4
0 0 0 4 5 5 5 9 9 9 9
0 0 0 4 5 6 6 9 10 11 11
(右下角为最终结果,为了直观所以打印出这个表来)
* @author Vivinia
*
*/
public class bag {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt(); //n中物品
int m=input.nextInt(); //承重m
int[] weight=new int[n+1],value=new int[n+1];
int[][] dp=new int[n+1][m+1];
for(int i=1;i<=n;i++)
weight[i]=input.nextInt();
for(int i=1;i<=n;i++)
value[i]=input.nextInt();
input.close();
for(int i=1;i<=n;i++) { //判断每个物品是否能放进
for(int j=1;j<=m;j++) { //对每个状态进行判断
if(j>&#
算法-01背包问题(动态规划)
最新推荐文章于 2024-04-07 17:29:22 发布