贪心算法-----------------装箱问题
创始人
2024-02-10 19:31:18
0

贪心算法中必须设定一个贪心准则-----来寻求每一步的最优解,但最后往往不是问题的整体最优解。

问题:假设有n个物品,其体积为V1,V2,V3,V4.......Vn,有若干个体积为V的箱子(理论物品的体积应该小于箱子的体积)

要求把所有物品全部装入箱子中,要求打开的箱子数最少。

分析:怎样合理化分配才能使得打开的箱子数最少呢?首先我们应该把所有的物品体积进行降序排序,先把体积最大的物品进行装箱

第二个物品从第一个箱子进行遍历看第一个箱子剩余的空间是否能容纳此物品,如果可以就装入,如果不可以就再开一个箱子,剩余

的物品依次类推。------------这也就是装箱问题的贪心准则。

声明物品信息的结构体-------物品编号,物品体积

声明物品节点和箱子节点的结构体---------相当于所有打开的箱子拉成了一条链表每个箱子上面的物品又会形成一条链表

#include
#include
#define N 5
#define V 10
typedef struct
{int gno;//物品编号int gv;//物品体积
}ElemG;//物品信息
typedef struct node
{int gno;struct node *link;
}GoodsLink;//物品节点
typedef struct box
{int reminder;//剩余体积GoodsLink *hg;//物品节点的头指针struct box *next;
}BoxLink;//箱子节点
BoxLink *BinPacking()
{
ElemG *g;
int i,j;
BoxLink *p,*tail,*hbox=NULL;
GoodsLink *new1,*q;
g=(ElemG *)malloc(N *sizeof(ElemG));
//物品信息的初始化
for(i=0;iremindernext);if(!p)//开新箱子(1.第一个物品进入2.遍历箱子后没有一个箱子的剩余空间可以放下此物品){//创建箱子节点p=(BoxLink *)malloc(sizeof(BoxLink));//初始化箱子p->reminder=V;p->next=NULL;p->hg=NULL;if(!hbox)//挂箱子hbox=tail=p;elsetail=tail->next=p;}//创建物品节点new1=(GoodsLink *)malloc(sizeof(GoodsLink));new1->gno=g[i].gno;new1->link=NULL;if(!p->hg)//判断要挂的箱子上是不是NULLp->hg=new1;else{for(q=p->hg;q->link;q=q->link);//遍历箱子节点上的物体尾插q->link=new1;}p->reminder=p->reminder-g[i].gv;//每次放入一个物品都需要算出剩余空间
}
return hbox;
}
int main()
{
BoxLink *p,*hbox;
GoodsLink *q;
int cnt=0;
//输出
hbox=BinPacking();
for(p=hbox;p;p=p->next)
{printf("第%d个箱子:",++cnt);for(q=p->hg;q;q=q->link)printf("%3d",q->gno);printf("\n");
}
}

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...