其实这种问题还是挺简单的,基于之前的01背包,再套上一层循环加上第二个费用就可以。
代码:
` #include < iostream >
include < algorithm >
include < cstdio >
using namespace std;
const int N=200;
int f[N][N];
int n,v,m;
int main()
{
int a,b,c;
scanf(“%d%d%d”,&n,&v,&m);
for(int i=1;i<=n;i++)
{
scanf(“%d%d%d”,&a,&b,&c);
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];
return 0;
} `
第一次写的可能有点潦草,希望大家见谅啊(毕竟我还只是一个小菜鸡)
你代码格式乱了,代码放到三个点里面,点就是键盘左上角那个