美文网首页
完全背包问题

完全背包问题

作者: 小幸运Q | 来源:发表于2019-01-03 15:25 被阅读4次

https://www.cnblogs.com/A1269180380/p/6344043.html

  • 注意数组的遍历方向跟01相反是从左往右。
  • 状态转移方程f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k*c[i]<= v}

输入:
第一行:两个整数,M(背包容量,M<=200)和N(物品数量,N<=30);
第2..N+1行:每行二个整数Wi,Ci,表示每个物品的重量和价值。

物品号i    1   2   3   4   5   6
体积C 3   2   5   1   6   4
价值W 6   5   10  2   16  8

output:26

6 10
3 6
2 5
5 10
1 2
6 16
4 8

输出:
仅一行,一个数,表示最大总价值。

#include <bits/stdc++.h>
using namespace std;
int main(){
  int i,j,number,volumn;
  scanf("%d %d",&volumn,&number);

  int weight[100]; //记录每个物品的质量
  int value[100];  //记录每个物品的价值
  int v,w;
  int f[100]; // 记录value的数组

  bool path[100][100]={false};  // 记录路径

  for(i=0;i<100;i++){
    f[i]=0;
  }

  for(i=1;i<number+1;i++){
    scanf("%d %d",&w,&v);
    weight[i]=w;
    value[i]=v;
  }

  for(i=1;i<=number;i++){
    for(j=weight[i];j<=volumn;j++){   // 必须从0开始,因为j-weight[i]会等于0
        if(j-weight[i]>=0&&f[j]<f[j-weight[i]]+value[i]){
            path[i][j]=true;
            f[j]=f[j-weight[i]]+value[i];
        }
    }
  }
  cout<<endl;
  cout<<"最优值:"<<f[volumn]<<endl;

  cout<<"打印选中的节点:"<<endl;
  while(i>=1&&volumn>=0){
      if(path[i][volumn]==true){
        cout<<"weight:"<<weight[i]<<" num:"<<1<<endl;
        volumn-=weight[i];
      }
      else{
        i--;
        //cout<<0<<"\t";
      }
  }
}

相关文章

  • 背包问题(完全背包)

    动态规划合集: 1.矩阵链乘法2.投资组合问题3.完全背包问题4.01背包问题5.最长公共子序列 例题3——背包问...

  • 完全背包问题

    相比于01背包问题只是单纯的多了一个条件:物品可以重复利用。 这是01背包问题的状态转移方程: 当W-wi大于0时...

  • 完全背包问题

    有n个重量和价值分别为wi,vi的物品。从这些物体中挑选出总重量不超过W的物品,求所有方案中价值总和的最大值。在这...

  • 完全背包问题

    https://www.cnblogs.com/A1269180380/p/6344043.html 注意数组的遍...

  • 背包问题2(完全背包)

    01背包是指每件物品有且只有一件,而完全背包则是每件物品件数无限,求装入背包所对应的最值。完全背包也有公式,在01...

  • 动态规划完全背包01

    完全背包 和01背包一样力扣上没有没有纯完全背包问题,都是需要完全背包的各种应⽤,需要转化成完全背包问题,所以我们...

  • 背包系列问题之--完全背包问题

    问题描述 小偷深夜潜入一家珠宝店,店里有5类宝物,每类宝物体积分别为W{1,3,2,4,5},对应的价值为V{20...

  • 算法-动态规划算法总结

    1 基础问题 2 背包问题 2.1 01背包 2.2 完全背包 3 打劫问题 4 股票问题 5 子序列问题 5.1...

  • 01背包问题(完全背包,部分背包)golang实现

    很经典的动态规划问题,具体思路这里就不列出了,网上太多资料了。想要详细理解的话可以去看背包九讲这里分别列出,01背...

  • 动态规划常见面试题

    子序列类型编辑距离 最长递增子序列 最大子数组 最长公共子序列 背包问题0-1背包问题 子集背包问题 完全背包问题...

网友评论

      本文标题:完全背包问题

      本文链接:https://www.haomeiwen.com/subject/pknfrqtx.html