题目描述
有个背包可承受重量N,现有T件物品
每件物品重量为Wi,价值为Vi ,每件物品只有一个,
这个背包可以装载物品的最大价值是多少?
输入
一行,N T 之间用空格隔开
后面t行,每行:重量Wi,价值Vi
输出
这个背包可以装载物品的最大价值
样例输入
100 5 77 92 22 22 29 87 50 46 99 90
样例输出
133
01背包,原基础上加记忆化就OK了
f[i][j]:
i表示第i个物品
j表示重量为j
总的表示最大价值
上代码
#include <bits/stdc++.h>
using namespace std;
int n, t, a[1001],b[1001],f[1001][1001], ans,m;
void dg(int wi, int mon, int step)
{
if(step>n)
{
ans=max(ans,mon);
return ;
}
else
{
if(wi+a[step]<=m)
if(mon+