01背包问题
来源:互联网 发布:医药软件排行 编辑:程序博客网 时间:2024/05/24 02:14
特点是每种物品只有一件,可以选则放或不放,
有i件物品,每件物品的重量是w[i],价值是v[i];给定一个包,这个包最大支持重量为AW;
问题是要怎么放这些物品能使包中的总价值最大;
给一个实例看的更懂些:
有三件物品:
重量依次为:15,18,10
价值依次为:24,25,15
贪心算法分析
首先要找到贪心的原则:
第一种原则:以重量最轻(即将重量最轻的物品依次放入包中,直到超出包的限制就停止放入了);
第二种原则:以价值最大(即将价值最大的物品依次放入包中,直到超出包的限制就停止放入了);
第三种原则:以单位价值(即单位重量所含价值大的物品先放,直到超出包的限制就停止放入了);
如何选择正确的原则?
1.建立数学模型来描述问题。
2.把求解的问题分成若干个子问题。
3.对每一子问题求解,得到子问题的局部最优解。
4.把子问题的解局部最优解合成原来解问题的一个解。
贪心算法核心思想:点击打开》
这个问题其实很容易看出选择第三年中原则。
这个例子代码:
#include<stdio.h> #include<malloc.h>void package0_1(int n,float c,float v[],float w[]); int main() { int n = 3; //物品件数 float c = 20; //包的最大承受重量 float v[] = {24,15,25}; //按照单位价值降序排列 float w[] = {15,10,18}; package0_1(n,c,v,w); return 0;} void package0_1(int n,float c,float v[],float w[]) { int i; for(i=0;i<n;i++) { if(w[i] > c) break; c = c - w[i]; printf("放入第%d件物品\n",(i+1)); } }
未完待续....
- 背包问题---01背包
- DP 背包问题 01背包
- 01背包--苹果,背包问题
- 01背包 完全背包问题
- 背包问题之01背包
- 背包问题之01背包
- 背包问题1:01背包
- 背包问题《1》01背包
- 01背包+完全背包问题
- 背包问题-背包01-苹果
- 背包问题之01背包
- 背包问题(01背包,完全背包,多重背包)
- 背包问题(01背包,完全背包,多重背包)
- 动态规划-----背包问题-----01背包,完全背包,多重背包
- 经典背包问题 01背包+完全背包+多重背包
- 背包(01背包、完全背包、多重背包)问题总结
- 背包问题(01背包,完全背包,多重背包)
- 经典背包问题 01背包+完全背包+多重背包
- MATLAB中norm()函数的应用
- Ubuntu12.10下安装 jdk-6u30-linux-i586.bin
- android handler和message的常用方法
- oracle官方文档
- /
- 01背包问题
- url访问全环节中最大长度部分测试
- CISCO防火墙端口映射配置
- 记录自己经常使用的vim技巧(实时更新)
- JSP和Servlet的中文乱码处理
- 贪心算法
- 第19天的交易(2013-4-16)(-100) (-3318.79) (郁闷的一天)
- WPF 参照WPF实现Silverlight中的多值绑定特性
- shell编程中的date用法