题意:没见物品消耗空间c[I],贡献w[I],数量num[I],求最大值
#include<iostream>
#include<string.h>
using namespace std;
const int N =2000;
int dp[2001],n,m;
int c[101],w[101],num[101];
int Max(int a,int b)
{
return a>b?a:b;
}
void pack()
{
memset(dp,0,sizeof(dp));//没有重置为0 ,wa一次
for(int i=1;i<=m;i++)
for(int j=n;j>=0;j--)
for(int k=1;k<=num[i];k++)
{
if(j>=k*c[i])
dp[j] = Max(dp[j],dp[j-k*c[i]]+k*w[i]);
}
cout<<dp[n]<<endl;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=1;i<=m;i++)
cin>>c[i]>>w[i]>>num[i];
pack();
}
}

本文介绍了一种解决背包问题的方法,通过动态规划算法实现。具体包括物品的消耗空间、贡献值及数量等参数,并通过示例代码展示了如何进行最大价值的计算。
2928

被折叠的 条评论
为什么被折叠?



