联机装箱

最近在看数据结构与算法,对书中的一些算法尝试着写了代码。因为自己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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值