1.
01背包
01背包:有n个物品,每个物品的重量分别为: w[1],w[2],...,w[n];
每个物品的价值分别为:v[1],v[2],...,v[n];
现有一个载重为t的背包,问如何装才能使得背包中物品总价值最高;
(每个物品只有唯一一个)
模板如下
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cmath>
using namespace std;
int f[100010],w[10010],v[10010];
int n,t;
int main()
{
freopen("01pack.in","r",stdin);
freopen("01pack.out","w",stdout);
cin>>t>>n;
for(int i=1;i<=n;i++)
cin>>w[i]>>v[i];
for(int i=1;i<=n;i++)
for(int j=t;j>=w[i];j--)
f[j]=max(f[j],f[j-w[i]]+v[i]);
cout<<f[t];
return 0;
}