算法1
f[i][j][k]三维表示
C++ 代码
没写,感觉过不了
算法2
空间优化
表示成两维f[j][k]表示花了j的钱,占了k的地方所能得到的最大价值
参考文献
acwing 算法提高课
C++ 代码
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=1e3;
int f[maxn][maxn];
int N,V,M;
int main()
{
scanf("%d%d%d",&N,&V,&M);
for(int i=1;i<=N;i++)
{
int v1,m1,w1;
scanf("%d%d%d",&v1,&m1,&w1);//v1为体积,m1为重量,w1为价值
for(int j=V;j>=v1;j--)
for(int z=M;z>=m1;z--)
f[j][z]=max(f[j][z],f[j-v1][z-m1]+w1);
}
cout<<f[V][M]<<endl;
}