动态规划真的懂了呀系列《背包DP:分组背包》

89 阅读1分钟

价值:记录学习过程的思考,本身就是一场动态规划的前生,记忆化搜索。

public class GroupHuChiBag_for_k_s_01bag {
    //f[j] : 容量为j的情况下,最大的价值
    // N <= 100
    void dp() {
        int n = 100; // 物品种数
        int m = 1000; // bag容量
        int f[] = new int[m + 1];
        int v[] = new int[n];
        int w[] = new int[n];
        for (int i = 0; i < n; i++) {
            //init 每组中的物品体积和重量
            int s = 5; //这里简单模拟下,每组5个
//            cin >> s; // init过程
//            for (int j = 0; j < s; j++) {
//                cin >> v[j] >> w[j];
//            }
            for (int j = m; j >= 0; j--) {
                //枚举互斥决策
                for (int k = 0; k < s; k++) {
                    f[j] = Math.max(f[j], f[j - v[k]] + w[k]);
                }
            }
        }
        int ans = f[m];
    }