装箱问题的简单实现
来源:互联网 发布:汽车网络推广 编辑:程序博客网 时间:2024/06/05 08:44
//装箱问题的简单实现
#include <iostream>#include <stdlib.h>#include <time.h>using namespace std;typedef struct{int gno;int gv;}Goods;class GNode{private:int gno;GNode * link = NULL;public:GNode(int gno){this->gno = gno;}~GNode(void){}int &Getgno(){return gno;}GNode* &Getlink(){return link;}};class GBox{private:int gv = 10;GNode *gh = NULL;GBox *next = NULL;public:GBox(void){}~GBox(void){}int &Getgv(){return gv;}GNode* &Getgh(){return gh;}GBox* &Getnext(){return next;}};class Realize{private:GBox *ghead = NULL;Goods *goods = NULL;int n;public:Realize(int value):n(value){}~Realize(){}void goodsinit(void);void PackingBox(); void PrintTable();void PrintResult();void dofun(void);};void Realize::goodsinit(void){srand((unsigned)time(NULL));goods = new Goods[n]();for(int i=0;i<n;i++){goods[i].gno = i+1;goods[i].gv = rand()%10+1;}for(int i=0;i<n-1;i++)for(int j=i+1;j<n;j++){Goods t;if(goods[i].gv < goods[j].gv){t = goods[i];goods[i] = goods[j];goods[j] = t;}}} void Realize::PrintTable(){for(int i=0;i<n;i++){cout<<"NO."<<goods[i].gno<<":"<<goods[i].gv<<endl;}}void Realize::PackingBox(){GNode *j;GBox *p,*t = NULL;for(int i=0;i<n;i++){j = new GNode(goods[i].gno);p = ghead;//找到第一个可以放的箱子或者是新开一个箱子 while(p && p->Getgv() < goods[i].gv){p = p->Getnext();} if(!p){//p为空,开新箱子 if(!t){//头结点 p = ghead = t = new GBox(); } else{ p = t = t->Getnext() = new GBox(); }}//p可以被放在当前位置if(!p->Getgh()){//箱子里无物品 p->Getgh() = j;}else{GNode *k = p->Getgh();while(k->Getlink())k = k->Getlink();k->Getlink() = j;}p->Getgv() -= goods[i].gv;}}void Realize::PrintResult(void){GBox *p;GNode *q;int i = 1;for(p = ghead;p;p = p->Getnext()){cout<<"第"<<i++<<"个箱子:"<<endl;for(q = p->Getgh();q;q = q->Getlink()){cout<<"NO."<<q->Getgno()<<" ";}cout<<"剩余空间:"<<p->Getgv()<<endl;}}void Realize::dofun(void){goodsinit();PrintTable();cout<<"物品清单排序完毕!"<<endl;PackingBox();cout<<"装箱完毕!"<<endl;PrintResult();cout<<"输出结果完毕!"<<endl; }int main(void){Realize* r = new Realize(20);r->dofun();return 0;}
0 0
- 装箱问题的简单实现
- 三维装箱问题Java代码的简单实现过程
- 简单的动态规划——装箱问题
- 货船装箱问题的递归和非递归实现
- ACM简单计算题-装箱问题
- 自动装箱时的问题
- 简单装箱
- Java实现POJ 1017:装箱问题
- 拆箱与装箱的简单实例
- 装箱问题
- 装箱问题
- 装箱问题
- 装箱问题
- 装箱问题
- 装箱问题
- 装箱问题
- 装箱问题
- 装箱问题
- ubuntu14.04 下subline编辑器的安装与配置输入中文解决方案
- 动态规划
- 直接拿来用!十大Material Design开源项目
- Android项目将生成的jar包混淆
- 黑马程序员——java基础——集合
- 装箱问题的简单实现
- Android 上的 HttpClient 的 Cookie 存取策略
- Korea worried
- nfl jerseys china free shipping
- 【语法】使用宏创建自己的语(du)法
- SVN中trunk,branches,tags用法详解
- HDU's ACM 1040 As Easy As A+B
- Cheap nfl super bowl jerseys wholesale from china
- wholesale stitched jerseys from china