zoukankan      html  css  js  c++  java
  • 分组背包+二维费用背包

    题目:https://www.acwing.com/problem/

    分组背包问题描述是共有n组物品,每组物品你只能选一个,求最大价值

     1 #include<iostream>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 const int N=110;
     6 struct node
     7 {
     8     int v,w;
     9 };
    10 node wp[N];
    11 int n,m;
    12 int f[N];
    13 int main(void)
    14 {
    15     cin>>n>>m;
    16     for(int i=1;i<=n;i++)
    17     {
    18         int s;
    19         cin>>s;
    20         for(int j=1;j<=s;j++)
    21         {
    22             cin>>wp[j].v>>wp[j].w;
    23         }
    24         for(int j=m;j>=0;j--)//枚举体积,先枚举体积才能保证同组物品不可能被选多次,至于枚举方法应该是同01背包的,因为只有一个
    25         {
    26             for(int k=1;k<=s;k++)//枚举每个物品
    27             {
    28                 if(j-wp[k].v>=0)
    29                 {
    30                     f[j]=max(f[j],f[j-wp[k].v]+wp[k].w);
    31                 }
    32             }
    33         }
    34     }
    35     cout<<f[m];
    36     return 0;
    37 }

    二位费用背包也是个比较简单的问题,主要就是将01背包中的体积换为重量和体积两个参数

     1 #include<iostream>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 const int N=110;
     6 int n,V,M;
     7 int f[N][N];
     8 int main(void)
     9 {
    10     cin>>n>>V>>M;
    11     for(int i=1;i<=n;i++)
    12     {
    13         int v,m,w;
    14         cin>>v>>m>>w;
    15         for(int j=V;j>=v;j--)
    16         {
    17             for(int k=M;k>=m;k--)
    18             {
    19                 if(j-v>=0&&k-m>=0)
    20                 {
    21                     f[j][k]=max(f[j][k],f[j-v][k-m]+w);
    22                 }
    23             }
    24         }
    25     }
    26     cout<<f[V][M];
    27     return 0;
    28 }
  • 相关阅读:
    watch 一些实际用法(vue)
    如何动态渲染多个echart图表小结(vue)
    webstorm 合并代码冲突后如何唤起代码合并弹窗方案
    jQuery Mobile
    响应式布局
    Angularjs
    项目经理PPT演讲意见
    创业者自己摸索总结的12条建议
    关于网站建设
    调研方案如何炼成?
  • 原文地址:https://www.cnblogs.com/greenofyu/p/11707182.html
Copyright © 2011-2022 走看看