算法:用穷举法求解0-1背包问题(很简洁的方法)

用穷举法求解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版权协议,转载请附上原文出处链接和本声明。