贪心背包问题
来源:互联网 发布:道路规划设计软件 编辑:程序博客网 时间:2024/05/02 05:47
Problem Description
有一个背包,背包容量是M=150。有7个物品,物品可以分割成任意大小。
要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。
物品 A B C D E F G
重量 35 30 60 50 40 10 25
价值 10 40 30 50 35 40 30
分析:
目标函数: ∑pi最大
约束条件是装入的物品总重量不超过背包容量:∑wi<=M( M=150)
要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。
物品 A B C D E F G
重量 35 30 60 50 40 10 25
价值 10 40 30 50 35 40 30
分析:
目标函数: ∑pi最大
约束条件是装入的物品总重量不超过背包容量:∑wi<=M( M=150)
Input
首先输入一个正整数T,表示有T组测试数据,接下来是T组数据,每组两行,分别为7个物品的重量和价值。
Output
每组数据的背包能装的最大总价值,精确到小数点后三位。
Sample Input
135 30 60 50 40 10 2510 40 30 50 35 40 30
Sample Output
190.625
分析:题目比较简单,就直接码代码了。一般来说,贪心算法的证明围绕着:整个问题的最优解一定由在贪心策略中存在的子问题的最优解得来的。
Code:#include<iostream>#include <iomanip> using namespace std;void sort(float a[],float b[],float c[],int n){for(int d = n/2;d >= 1;d = d/2){for(int i = d + 1;i <= n;i++){a[0] = a[i];b[0] = b[i];c[0] = c[i];for(int j = i - d;j > 0&&a[0] < a[j];j = j - d){a[j + d] = a[j];b[j + d] = b[j];c[j + d] = c[j];}a[j + d] = a[0];b[j + d] = b[0];c[j + d] = c[0];}}}float getSum(float a[],int n){float sum = 0;for(int i = n;i <= 7;i++)sum = sum + a[i];return sum;}int main(){int n;cin>>n;while(n--){int i,j,k;float sum=0;float zl[8],jz[8],xjb[8];for(i = 1;i < 8;i++)cin>>zl[i];for(j = 1;j < 8;j++)cin>>jz[j];for(k = 1;k < 8;k++)xjb[k] = jz[k]/zl[k];sort(xjb,zl,jz,7);int temp = 7;while(getSum(zl,temp) <= 150)temp--;for(int t = 7;t > temp;t--)sum = sum + jz[t];sum = sum + (150 - getSum(zl,temp + 1)) / zl[temp] * jz[temp];cout<<setiosflags(ios::fixed)<<setprecision (3)<<sum<<endl;}return 0;}
- 背包问题--贪心
- 贪心算法 - 背包问题
- 贪心背包问题
- 贪心法-背包问题
- 贪心之背包问题
- 贪心算法----背包问题
- 【贪心算法】:背包问题
- 贪心-背包问题
- 贪心算法-背包问题
- 贪心算法 背包问题
- 背包问题-贪心
- 贪心算法-背包问题
- 【贪心算法】背包问题
- 贪心算法-背包问题
- 贪心算法--背包问题
- 贪心之背包问题
- 背包问题-贪心算法
- nyoj 106 背包问题 【背包问题】【贪心】
- ARM-Linux学习过程问题集锦
- c++ 生成随机数、计算运行时间
- 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
- awk初学
- LightOJ 1282 求n^m的高三位和低三位
- 贪心背包问题
- struts2注解配置注意事项
- 浅谈Struts2拦截器的原理与实现
- TableColumn javafx
- 二叉树排序原理
- js键盘键值
- NOR flash和NAND flash区别,RAM 和ROM区别
- 2013年4月11日 23:31:05
- Struts2拦截器原理