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

        这是一个简单的最优装载问题,类似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
 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
 resultGoodsList=new ArrayList<>();        for (Integer goods:goodsList){            if (surplus>=goods.intValue()){                surplus=surplus-goods.intValue();                resultGoodsList.add(goods);            }        }        System.out.println(resultGoodsList.size());    }}