贪心算法 之 装箱问题(可得到最优解的近似解)
1.贪婪准则:
1>贪婪准则设计算法的每一步的最优解(局部最优)
2>贪心准则一旦设好,中途不变
2.贪婪准则并不一定能得到最优解:
装箱问题:
有若干个体积为V的箱子;
有N个物品体积为:v0,v1,v2,v3.......
要求:
将所有的物品装入箱子中,使得打开的箱子最少;
贪婪准则:
1.将所有物品按照体积降序排列;
2.每次取出一个物品(当前没有装入箱子的体积最大的);
3.遍历所有已打开的箱子,放入一个较早打开的箱子,如果放不下便开一个新箱子;
实现(由伪代码描述):
1.存储:
2.类型声明:
物品信息:
typedef struct{
int gnum; //物品编号
int gv; //物品体积
}ElemG;
物品信息集合:假设有n个物品;
ElemG *g;
g=(ELemG *)malloc(n*sizeof(ElemG));
物品信息初始化:
for(int i;i<n;i++){
}
物品节点:
typedef struct node{
int gnum;
struct node *link