动态规划---二维费用问题

一:二维费用背包问题

(一)题目详述

(二)实现思路

对比01背包问题即可

(三)算法实现

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 110;
int f[N][N];    //表示体积和重量两种费用

int n, v, m;

int main()
{
    cin >> n >> v >> m;    //输入物品件数、背包最大容量,背包最大承重

    for (int i = 0; i < n;i++)    //循环物品
    {
        int a, b, c;    //表示当前物品的体积、质量、价值
        cin >> a >> b >> c;
        //下面开始计算代价,原本只有一个,现在变为2个,使用多重循环即可
        for (int j = v; j >= a; j--)
            for (int k = m; k >= b; k--)
                f[j][k] = max(f[j][k], f[j - a][k - b] + c);    //对应不选和选两种情况
    }    

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

 

posted @ 2020-09-08 14:31  山上有风景  阅读(189)  评论(0)    收藏  举报