zoukankan      html  css  js  c++  java
  • 分组背包问题

    分组背包问题

     

     二维:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int maxn = 110;
     5 
     6 int dp[maxn][maxn];//dp[i][j]:只从前i组物品中选, 当前体积小于等于j的最大值
     7 int v[maxn][maxn], w[maxn][maxn], s[maxn]; //v为体积, w为价值, s代表第i组物品的个数
     8 int n,m,k;
     9 
    10 int main()
    11 {
    12     scanf("%d%d",&n,&m);
    13     for(int i=1;i<=n;i++){
    14         scanf("%d",&s[i]);
    15         for(int j=0;j<s[i];j++){
    16             scanf("%d%d",&v[i][j], &w[i][j]);
    17         }
    18     }
    19     for(int i=1;i<=n;i++){
    20         for(int j=0;j<=m;j++){
    21             dp[i][j] = dp[i-1][j];//第i组不选
    22             for(int k=0;k<s[i];k++){//第i组选哪个
    23                 if( j>=v[i][k] ){
    24                     dp[i][j] = max(dp[i][j], dp[i-1][j-v[i][k]]+w[i][k]);
    25                 }
    26             }
    27         }
    28     }
    29     printf("%d
    ",dp[n][m]);
    30     return 0;
    31 }

    一维:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int maxn = 110;
     5 
     6 int dp[maxn];//仿照01背包滚动数组
     7 int v[maxn][maxn], w[maxn][maxn], s[maxn]; //v为体积, w为价值, s代表第i组物品的个数
     8 int n,m,k;
     9 
    10 int main()
    11 {
    12     scanf("%d%d",&n,&m);
    13     for(int i=1;i<=n;i++){
    14         scanf("%d",&s[i]);
    15         for(int j=0;j<s[i];j++){
    16             scanf("%d%d",&v[i][j], &w[i][j]);
    17         }
    18     }
    19     for(int i=1;i<=n;i++){
    20         for(int j=m;j>=0;j--){
    21             for(int k=0;k<s[i];k++){//第i组选哪个
    22                 if( j>=v[i][k] ){
    23                     dp[j] = max(dp[j], dp[j-v[i][k]]+w[i][k]);
    24                 }
    25             }
    26         }
    27     }
    28     printf("%d
    ",dp[m]);
    29     return 0;
    30 }
  • 相关阅读:
    注册算法入门
    call传参之通过堆栈
    winhex注意
    输入字符串长度
    integer promotion
    网页flash兼容浏览器代码
    逆向工程——注册篇
    esp定律的一点说明
    base64
    意外
  • 原文地址:https://www.cnblogs.com/wsy107316/p/14087798.html
Copyright © 2011-2022 走看看