联机装箱

原创 2016年08月30日 16:59:19

最近在看数据结构与算法,对书中的一些算法尝试着写了代码。因为自己coding能力比较差,所以自己写的大部分都不够简洁。等看完书再回来改吧。

//
//  main.cpp
//  zhuangxiang
//
//  Created by s on 16/8/30.
//  Copyright © 2016年 s. All rights reserved.
//

#include <iostream>
#include <vector>
using namespace std;
void box_1(vector<float>&a,int n){//下项适配
    vector<float> r(n,1.0);
    int num=(int )a.size();
    int count=0;
    for(int i=0;i<num&&count<n;){
        if(a[i]<=r[count]){
            r[count]-=a[i];
            a[i]=count;
            i++;
        }
        else{
            count++;
        }
    }
    for(int i=0;i<num;i++)
    cout<<a[i]<<" ";
    cout<<'\n';
    }

void box_2(vector<float>&a,int n){//first fit
    vector<float> r(n,1.0);
    int num=(int )a.size();
      for(int i=0;i<num;i++)
        for(int j=0;j<=n;j++){
            if(a[i]<=r[j]){
                r[j]-=a[i];
                a[i]=j;
                break;
        }
        }
    for(int i=0;i<num;i++)
        cout<<a[i]<<" ";
    cout<<'\n';
    for(int i=0;i<=n;i++)
        cout<<r[i]<<" ";

}
void box_3(vector<float>&a ,int n){//best fit
    vector<float> r(n,1.0);
    int num=(int )a.size();
    for(int i=0;i<num;i++){
        float min=1.0;
        int temp=0;
        for(int j=0;j<=n;j++){
            if(a[i]<=r[j] && (r[j]-a[i])<min){
                min=r[j]-a[i];
                temp=j;
                cout<<"min"<<min<<endl;
        }
        }
        r[temp]-=a[i];
        a[i]=temp;
    }
    for(int i=0;i<num;i++)
        cout<<a[i]<<" ";
    cout<<'\n';
    for(int i=0;i<=n;i++)
        cout<<r[i]<<" ";
}
int main(int argc, const char * argv[]) {
    vector<float> a;
    float i;
    int n;
    cin>>n;
    cout<<"please input"<<'\n';
    while(cin>>i)
        a.push_back(i);
    int num=(int)a.size();
    cout<<num<<endl;
    box_3(a, n);
    return 0;
}

相关文章推荐

近似装箱问题(三种联机算法实现)

【0】README0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 “近似装箱问题(三种联机算法实现)” 的idea 并用源代码加以实现; 0.2) 近似装箱问题的三种联机...

货物装箱的自动控制系统

  • 2014年12月02日 20:55
  • 1.02MB
  • 下载

装箱问题解法

  • 2015年08月25日 14:36
  • 301B
  • 下载

Cognos联机文档片段摘读:分布式部署

文档来源【inst_cr_winux】 关于Cognos 8.3的分布式及集群负载调度策略(由于不同版本的Cognos调度策略略有不同,故标明版本) To improve performan...
  • xzl1203
  • xzl1203
  • 2011年08月08日 21:02
  • 1497

分支定界求解装箱问题

  • 2011年10月28日 10:42
  • 2KB
  • 下载

QPBOC联机查询:后台响应 作弊卡 问题分析和解决方法

今天测试的时候,应用层同事反应,使用QPBOC进行联机交易查询余额的时候,后台返回 “作弊卡”(响应码:34). 开始寻找并定位问题,一开始没多想,因为有旁边其他的厂商可以顺利查询该卡的余额,只有我...
  • freudlv
  • freudlv
  • 2015年09月08日 17:10
  • 1565

装箱与拆箱(一)

  • 2007年12月27日 14:28
  • 6.24MB
  • 下载

集装箱装箱优化软件v2.0注册机

  • 2013年02月18日 18:24
  • 18.71MB
  • 下载

联机日志文件过小引发的log file 相关等待

Oracle 联机重做日志文件记录了数据库的所有变化(DML,DDL或管理员对数据所作的结构性更改等),用于对于意外删除或宕机利用日志文件实现数据恢复来确保数据的完整性。但不合理的联机日志文件规划将引...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:联机装箱
举报原因:
原因补充:

(最多只允许输入30个字)