贪心算法之装箱问题

本文介绍了如何使用贪心算法解决装箱问题。贪心准则包括每一步选择最优解且不可中途改变。问题描述是将n个不同体积的物品装入体积为V的箱子中,目标是最小化箱子数量。通过将物品按体积降序排列,每次尝试将最大体积的物品放入已打开的箱子,以此达到优化目标。
摘要由CSDN通过智能技术生成

贪心准则:1.贪心准则设计算法过程的每一步都是最优解

                 2.贪心准则一旦被设计,中途不可改变

装箱问题:

    问题描述:

            1.有若干个体积为V的箱子

            2.有n个物品,体积分别为:V1,V2,V3…………

            要求:将所有物品都装入箱子中,使箱子尽可能的少

    贪心准则:

            1.将所有物品按照体积降序排列

            2.每次取出一个物品(当前未装入箱子中体积最大的)遍历所有已经打开的箱子,将该物品放入一个较早打开的箱子中

#include<stdio.h>
#include<stdlib.h>
#define V 35
#define N 5
//物品信息
typedef struct{
	int gnum;//物品编号 
	int gv;//物品体积 
}ElemG; 

//物品结点 
typedef struct node{
	int gnum;
	struct node *next;
}GoodsLink; 

//箱子结点
typedef struct box{
	int remainder;  //用来存放剩余体积
	GoodsLink *hg;
	struct box *next; 
}BoxLink;
ElemG *CreateG();
ElemG *BuddleSont(ElemG *g);
BoxLink * Enchase(ElemG *g);
void Print(BoxLink *hbox);


int main(void)
{
	ElemG *g;
	BoxLink *hbox;
	g = CreateG();
	g = BuddleSont(g);
	hbox 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
贪心算法是一种常用的解决问题的方法,可以用来解决一些优化问题,如装箱问题。在装箱问题中,我们需要将一组物品放入尽可能少的箱子中。 下面是一个简单的贪心算法解决装箱问题的示例: 1. 将物品按照体积从大到小进行排序。 2. 创建一个空的箱子列表,用于存放装箱后的结果。 3. 遍历每个物品: - 尝试将物品放入已有的箱子中,如果能放下,则放入最先能放下该物品的箱子中。 - 如果无法放入任何已有的箱子中,则创建一个新的箱子,并将该物品放入其中。 4. 输出箱子列表作为结果。 以下是一个简单的 MATLAB 代码示例: ```matlab function boxList = packing(items, boxSize) % 对物品按照体积从大到小进行排序 sortedItems = sort(items, 'descend'); % 创建一个空的箱子列表 boxList = {}; % 遍历每个物品 for i = 1:length(sortedItems) item = sortedItems(i); fitInExistingBox = false; % 尝试将物品放入已有的箱子中 for j = 1:length(boxList) box = boxList{j}; if item <= boxSize - sum(box) % 物品能放入该箱子中 box = [box, item]; boxList{j} = box; fitInExistingBox = true; break; end end % 如果无法放入任何已有的箱子中,则创建一个新的箱子 if ~fitInExistingBox boxList{end+1} = [item]; end end end ``` 你可以调用 `packing` 函数,并传入物品列表和箱子的容量来求解装箱问题。返回的结果是一个箱子列表,每个箱子中包含一组物品。 请注意,贪心算法并不一定能够得到最优解,但在某些情况下可以提供较好的近似解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值