动态规划---分组背包问题


一:分组背包问题

(一)问题详述

(二)实现思路

01背包问题变种

(三)算法实现

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 110;
int f[N],v[N],w[N];    //对应最大值,体重、价值
int n,  m;

int main()
{
    cin >> n  >> m;    //输入物品组数、背包最大容量

    for (int i = 0; i < n; i++)    //循环物品组数
    {
        int s;        //获取该组中的物品数
        cin >> s;
        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++)    //按照分组进行计算
                if (j >= v[k])
                    f[j] = max(f[j], f[j - v[k]] + w[k]);
    }

    cout << f[m] << endl;
    system("pause");
    return 0;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM