多重背包--java

Posted 一世安然L

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多重背包--java相关的知识,希望对你有一定的参考价值。

多重背包

有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值 是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大
母函数的思想也是如此 给你 价值, 物品数量的限制, 然后凑,

hdu2191

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {

            int n = sc.nextInt();
            int m = sc.nextInt();

            int v[] = new int[101];
            int w[] = new int[101];
            int num[] = new int[101];
            for (int i = 0; i < m; i++) {
                v[i] = sc.nextInt();
                w[i] = sc.nextInt();
                num[i] = sc.nextInt();
            }

            int dp[] = new int[10001];
            for (int i = 0; i <= m; i++)
                dp[i] = 0;
            for (int i = 0; i < m; i++) {
                for (int k = 0; k <= num[i]; k++) {
                    for (int j = n; j >= v[i]; j--) {
                        if (dp[j] < dp[j - v[i]] + w[i]) {
                            dp[j] = dp[j - v[i]] + w[i];

                        }
                    }
                }
            }

            System.out.println(dp[n]);
        }
    }
}

 

以上是关于多重背包--java的主要内容,如果未能解决你的问题,请参考以下文章

HDU_3591_(多重背包+完全背包)

动态规划_01背包_完全背包_多重背包_分组背包

HDU 3591 (完全背包+二进制优化的多重背包)

动态规划问题3--多重背包

动态规划问题3--多重背包

HDU_3732_(多重背包)