一、背包问题
分类
01背包
完全背包
分组背包
多重背包
二、01背包
例题
#include<iostream>
using namespace std;
const int N=110,M=1010;
int f[N][M];//M数据最大为100,T数据最大为1000,开一个比数据范围大一点的数组
int m, n,v[N],w[N];
int main()
{
cin >> m>>n;
for (int i = 1; i <= n; i++)
{
cin >> v[i] >> w[i];
}//输入数据
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
f[i][j] = f[i - 1][j];//一定都可以不选
if (j >= v[i])//只有背包充足才可以选
{
f[i][j] = max(f[i][j], f[i - 1][j - v[i]]+ w[i]);//取选和不选中的最大值,最终遍历到f[n][m]
}
}
}
cout << f[n][m];
return 0;
}