用穷举法求解0-1背包问题
可以先看上面这个视频再看我的代码,上面这个视频最简洁,非常好
#include <bits/stdc++.h>
using namespace std;
//定义结构体
struct pack{
int w,v;//weight,value,体重、价值
}a[10];
int f[10];//储存最大总价值
int n,m;//拥有物品个数,背包容量
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)//储存每个物品的重量、价值
{
cin>>a[i].w>>a[i].v;
}
for(int i=1;i<=n;i++)//从第一个物品开始
{
for(int j=m;j>=a[i].w;j--)//从背包容量开始递减
{
f[j]=max(f[j],f[j-a[i].w]+a[i].v);
}
}
cout<<f[m];
return 0;
}
版权声明:本文为weixin_51262605原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。