联机装箱

最近在看数据结构与算法,对书中的一些算法尝试着写了代码。因为自己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;
}
阅读更多
文章标签: 算法
下一篇关于分治
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭