贪婪算法-----装箱问题

贪婪算法

  • 贪婪准则
    • 算法在推进的过程中,每一步都追求最优解
    • 贪婪准则一旦确定,中途不能改变
  • 贪婪算法求出的最终解不一定是最优解

装箱问题

  • 问题描述:有若干个体积为V的箱子,有n个体积为V0,V1,V2,V3…Vn-1的物品
  • 要求:把所有物品都装入箱子中,使打开的箱子尽可能少
  • 解决思路
    • 贪婪准则

      • 将所有物品按体积的降序排序
      • 每次取出一个物品(当前未装入物品的体积最大值)
      • 遍历所有已打开的箱子,将物品放入最早打开的箱子
    • 存储形式:链表
      这里写图片描述

    • 类型声明
      1.排序物品体积时物品的类型

typedef struct{
   
	int gno;//物品编号
	int gv;//物品体积
}ElemG;
      2.装箱时物品的类型
typedef struct node{
   
	int gno;//物品编号
	struct node* link;//指向下一个节点的指针域
}GoodsLink;
      3.箱子节点
typedef struct box{
   
	int Reminder;//存放箱子剩余体积
	GoodsLink *hg;//指向物品的地址
	struct box* next;//指向下一个箱子的指针域
}EBOX;
  • 算法描述
    1.创建物品信息,并初始化
ElemG* Init_Goods(){
   
	int v[N] = {
   3,2,5,8,10,1,6,12,19,4}; //物品的体积
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值