背包问题之穷举法
来源:互联网 发布:青海省干部网络培训 编辑:程序博客网 时间:2024/06/05 03:58
最近复习了一下算法,觉得背包问题最具代表性。可以用大多数通用的算法(穷举,动规,回溯,分枝限界)来解决。因此将最近的笔记整理一下,发到自己的博客上。
问题描述:背包的容量为C,现有N件物品,价格分别为p[0],p[1]......p[n-1].重量分别为:w[0],w[1]......w[n-1].从N件物品中选择任意个放入背包中,使得物体的价值最大并且总重量不超过背包的容量C。
采用数学语言描述如下:
在 w[0]*x[0] + w[1] *x[1]+....... +w[n-1]*x[n-1] < C, x[i] = 0 或1 的条件下
求 p[0]*x[0] + p[1] *x[1]+....... +p[n-1]*x[n-1] 的最大值。
穷举算法的基本思想如下:
枚举也所有可能的情况,找出其中的最大值。
用N位二进制数来表示N件物品的选取情况,例如在N=3的情况下 ‘000’代表未选取任何物品,而 ‘101’代表选取了第1件和第3件物品。因此将 0 ---- 2^n-1 的情况枚举,找也最大值即可。
算法如下:
分析:
些算法的时间复杂度为 2^n, 并且要求(n<=32),所以算法的效率不高。但枚举算法是一种比较通用的算法,通常在找不到最佳的算法时,采用些算法。
- 背包问题之穷举法
- 0/1背包问题之穷举解法
- 利用穷举法解决01背包问题
- 0-1背包问题 穷举法
- 利用穷举法解决组合问题,背包问题,变量相等问题
- 穷举法--百钱百鸡问题
- 项目8-穷举法解决组合问题之百钱百鸡问题
- 穷举法之韩信点兵
- 穷举法解决组合问题
- 穷举法解决组合问题
- 穷举法解决组合问题
- 穷举法解决组合问题
- 穷举法解决组合问题
- 穷举法解决组合问题
- 穷举法解决组合问题
- 穷举法解决百钱买百鸡问题
- 穷举法解决组合问题
- 穷举法解决组合问题
- 基于流的I/O--文件操作
- An Introduction to OpenCL
- 设计模式之—单例模式
- 麻将和牌牌型
- VC 6中配置OpenGL开发环境
- 背包问题之穷举法
- sql 与 orl各类内置函数 详解~~
- connect by 和 start with 的用法 共享
- C++字符串函数详解
- Validator验证框架入门讲解
- 实用且不花哨的js代码大全
- Java 知识学习笔记
- oracle 10g rac CRSD ,OCSSD,EVMD 进程的全称及各自的作用。
- JAVA推荐网站