贪婪算法(贪心算法)之装箱问题--C语言描述

贪婪准则:局部最优。贪婪准则一旦确定,中通不能改变。

贪婪算法不一定能找到最优解,但可以近似最优解

经典问题:装箱问题

 1.问题描述

       有若干个体积为V的箱子。有N个物品,物品的体积分别为V1,V2直到VN。将所有的物品装入箱子,使打开的箱子尽可能的少。

2.贪婪准则:

     (1)将物品按体积大小降序排列

     (2)每一次取出的物品是未装入箱子中体积最大的

     (3)遍历已经打开的箱子,将物体放入第一个可以放入的箱子

分析:

创建两个链表,一个存储打开的箱子,一个存储每个箱子中存储的物品。创建一个结构体以存储物品信息。 

代码实现 

#include <stdio.h>
#include <stdlib.h>
#define V 10

//物品信息结构体
typedef struct {
	int gno;//物品编号
	int gv;//物品体积
}ElemG;
//物品链节点
typedef struct node {
	int gnu;//物品链上物品编号
	struct node * link;//指向下一个物品节点
}GoodsLink;
//箱子链节点
typedef struct box {
	int reminder;//箱子剩余空间
	GoodsLink * hg;//指向物品链的第一个节点
	struct box * next;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值