算法装箱问题.docx

算法装箱问题.docx

ID:50978854

大小:26.61 KB

页数:5页

时间:2020-03-16

算法装箱问题.docx_第1页
算法装箱问题.docx_第2页
算法装箱问题.docx_第3页
算法装箱问题.docx_第4页
算法装箱问题.docx_第5页
资源描述:

《算法装箱问题.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、算法设计与分析练习1:装箱问题设有编号为0,1...,n-1的n种物品,体积分别为V0,V1,...,Vn-1。将这n种物品装到容量都为V的若干箱子里。约定这n种物品的体积均不超过V,要求使装进这n种物品的箱子书要少。算法分析:设置变量:物品个数,箱子体积,每个物品的体积。将所有物品按降序排列;物品装箱;得到所用箱子个数。#include#include#defineV10//物品信息声明:物品编号与物品体积typedefstruct{intgno;intgv;}GInfor;//物品结点类型声明typedefstructgnode{intgno;stru

2、ctgnode*next;}GNode;//箱子结点类型声明typedefstructbnode{intremainder;GNode*firstg;structbnode*next;}BNode;//对物品信息进行降序排列voidSortD(GInfor*g,intn){inti,j;GInfort;for(i=0;ig[i].gv){t=g[j];g[j]=g[i];g[i]=t;}}}}BNode*PackingBox(GInfor*g,intn){BNode*h=NULL;BNode*p=NULL;BNod

3、e*tail=NULL;GNode*newg=NULL;inti;for(i=0;iremaindernext);if(p==NULL){//需要开新箱子p=(BNode*)malloc(sizeof(BNode));p->remainder=V;p->firstg=NULL;p->next=NULL;if(!h)//因为无头结点需要开新箱子h=tail=p;else{//因为现有的所有箱子剩余容积均不够需开新箱子tail=tail->next=p;}}//向确定要放入物品的箱子(不论新旧)放入物品newg=(GNode*

4、)malloc(sizeof(GNode));newg->gno=g[i].gno;newg->next=p->firstg;p->firstg=newg;printf("thething'svis%d",g[i].gv);p->remainder-=g[i].gv;}returnh;}intmain(void){intGnum,i,Bnum;GInfor*g=NULL;BNode*hBox=NULL;BNode*p=NULL;printf("Pleaseinputthenumberofthings");scanf("%d",&Gnum);//创建动态数组存放所有物品信息g=(GInfor*)

5、malloc(Gnum*sizeof(GInfor));for(i=0;inext,Bnum++);printf("Thenumberofboxis:%d",Bnum);return0;}运行结果如图所示:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。