首页 🐶算法

题目

0.png

思路

和多重背包差不多,限制一下k的次数即可

#include <bits/stdc++.h>

using namespace std;

int dp[1005];

int main()
{
    int n, m;
    cin>>n>>m;
    for (int i = 0; i < n; i++)
    {
        int v, w, s;
        cin>>v>>w>>s;
        for (int j = m; j >= 0; j--)
        {
            for (int k = 1; k <= s && k * v <= j; k++)
            {
                dp[j] = max(dp[j], dp[j - k * v] + k * w);
            }
        }
    }
    cout<<dp[m]<<endl;
    return 0;
}



文章评论

    电商运营课程 访客FireFoxWindows
    2021-07-16 3:16   回复

    涨知识啊,学习了