装载问题-贪心算法

        现有一个载重为W的货船,集装箱i个,重量分别为wi,在不考虑体积的状况下,要求装载的数量最多。
java

        这是一个简单的最优装载问题,相似01背包问题,但考虑的不是价值而是数量,因此每次选取剩余集装箱中重量最轻的就能够,经过贪心算法就能获得最优解。
算法

package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Created by saishangmingzhu on 2018/11/30.
 */
public class BinPackingProblem {
    public static void main(String[] arg) {
        new BinPackingProblem().greedy();
    }

    /**
     * 贪心算法
     */
    public void greedy(){
        int rucksackWeight=10;
        List<Integer> goodsList=new ArrayList<>();
        goodsList.add(1);
        goodsList.add(3);
        goodsList.add(7);
        goodsList.add(3);
        goodsList.add(1);
        goodsList.add(5);
        goodsList.add(4);
        Collections.sort(goodsList);
        int surplus=rucksackWeight;
        List<Integer> resultGoodsList=new ArrayList<>();
        for (Integer goods:goodsList){
            if (surplus>=goods.intValue()){
                surplus=surplus-goods.intValue();
                resultGoodsList.add(goods);
            }
        }
        System.out.println(resultGoodsList.size());
    }
}
相关文章
相关标签/搜索