zoukankan      html  css  js  c++  java
  • 完全背包

    完全背包

    分析:

    解决完全背包游两个思路

    1、利用单维数组前面结果后后面结果的影响从而实现每样物品取多件的效果

    2、利用分组背包的思想,枚举每个物品取1->k件的效果

    1、完全背包(单数组优化)

     1 //f[j]表示前i件物品花费j元的最大价值
     2 //f[j]=max(f[i-1][j],f[i-1][j-w[i]]+c[i])
     3 //f[j]=0
     4 
     5 #include <bits/stdc++.h>
     6 using namespace std;
     7 int f[105];
     8 int m,n;
     9 int w[105],c[105]; 
    10 
    11 int main(){
    12     freopen("in2.txt","r",stdin); 
    13     //初始化dp
    14     memset(f,0,sizeof(f));
    15     cin>>m>>n;
    16     for(int i=1;i<=n;i++){
    17         cin>>w[i]>>c[i];        
    18     }
    19     
    20     
    21     for(int i=1;i<=n;i++){
    22         for(int j=1;j<=m;j++){
    23             if(j>=w[i]){
    24                 f[j]=max(f[j],f[j-w[i]]+c[i]);
    25             }
    26         }
    27     }
    28     cout<<f[m]<<endl;
    29     
    30     return 0;
    31 } 
    完全背包(单数组优化)

    2、完全背包(分组背包单数组优化)

    k是在状态转移方程里面的 

    j的向前或者是向后只和维数相关

     1 //f[j]表示前i件物品花费j元的最大价值
     2 //f[j]=max(f[j],f[j-w[i]*k]+c[i]*k);
     3 //f[j]=0
     4 
     5 #include <bits/stdc++.h>
     6 using namespace std;
     7 int f[105];
     8 int m,n;
     9 int w[105],c[105]; 
    10 
    11 
    12 int main(){
    13     freopen("in2.txt","r",stdin); 
    14     //初始化dp
    15     memset(f,0,sizeof(f));
    16     cin>>m>>n;
    17     for(int i=1;i<=n;i++){
    18         cin>>w[i]>>c[i];        
    19         
    20     }
    21     
    22 
    23     //k是在状态转移方程里面的 
    24     //j的向前或者是向后只和维数相关 
    25         
    26     for(int i=1;i<=n;i++){
    27         for(int j=m;j>=1;j--){
    28             int num=m/w[i];
    29             for(int k=1;k<=num;k++){
    30                 if(j>=w[i]*k){
    31                     f[j]=max(f[j],f[j-w[i]*k]+c[i]*k);
    32                 }
    33             }
    34         }
    35     }
    36     cout<<f[m]<<endl;
    37     
    38     return 0;
    39 } 
    40 
    41 
    42 //单数组
    43 //可以边读入边动态规划么 
    44 //01背包的分组背包
    45 //01背包的分组背包的一维数组优化 
    完全背包(分组背包单数组优化)
  • 相关阅读:
    用VSTS进行网站压力测试
    紧急求助!powerdesigner 12的问题!
    决定你是富人还是穷人的12法则(转)
    LINQ to SQL公共基类
    Web.config详解(转)
    向iframe中的页面传递参数
    [转]mysql 乱码问题解决终结
    [转]mysql多次调用存储过程的问题
    未能加载类型“System.Web.Mvc.ViewPage<String>”
    javascript之典型高阶函数
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7499717.html
Copyright © 2011-2022 走看看