【动态规划】二维费用的背包问题

本文介绍了一种在动态规划算法中使用多重循环的方法,通过增加约束条件,优化了物品背包问题的解决方案。代码示例展示了如何在二维数组上进行迭代,以求解最大价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
多了一层约束条件,所有又多了一层循环。

#include <iostream>
using namespace std;
const int maxn=1e2+10;
int v,m,w,dp[maxn][maxn];
int M,n,V;
int main(){
    cin>>n>>V>>M;
    for(int i=1;i<=n;i++){
        cin>>v>>m>>w;
        for(int j=V;j>=v;j--)
            for(int k=M;k>=m;k--)
                dp[j][k]=max(dp[j][k],dp[j-v][k-m]+w);
    }
    cout<<dp[V][M];
}