关闭

联机装箱

标签: 算法
37人阅读 评论(0) 收藏 举报

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:57次
    • 积分:20
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档
    阅读排行
    评论排行