贪心算法 贪心算法是一种不追求最优解,只想得到较为满意的解的方法,贪心法一般可以快速得到较为满意的解,因而省去了为了找到最优解而要穷尽所有可能必须耗费的大量时间.贪心算法常以当前情况为基础做出最优选择,而不需要考虑各种可能的整体情况,所以贪心算法不需要回溯! |
- 贪婪准则
①、算法的每一步都要求最优解(即局部最优)
②、贪婪准则一旦设定好,中途不能改变
- 贪婪准则并不一定可以获得绝对最优解,只是局部最优
- 问题描述:
装箱问题:
A>.有若干个体积为V的箱子
B>.有n个物品,v0,v1,v2… …vn,体积互不相同
要求:将所有的物品都装入箱子里,使打开的箱子尽可能的少
- 设置贪心准则
I、将所有的物品按照体积降序排列
II、每次取出一个物品(为当前未装箱的体积最大的),遍历所有已经打开的箱子,将该物品装入一个较早打开的箱子
III、如果都装不下,就打开一个新箱子装入物品
![这里写图片描述](https://img-blog.csdn.net/20150905113140547)
typedef struct{
int gnum;
int gv;
}ElemG;
typedef struct node{
int gnum;
struct node *link;
}GoodsLink;
typedef struct box{
int Rem;
struct bo