我必须创建一个算法,该算法需要将n个行李袋(每个行李袋的重量不同)放入n 个容器中,每个容器可容纳 50 公斤。每个袋子按顺序装入一个容器中。
行李袋重量的示例字符串如下(每个数字代表一个袋子的重量):
16 24 25 3 20 18 7 17 4 15 13 22 2 12 10 5 8 1 11 21 19 6 23 9 14
装满行李的容器有两条规则:
- 一个集装箱可携带不超过 50(公斤)的行李
- 如果下一个(卸载的)袋子会导致容器超重,则将其放入下一个容器中
我的最终目标是打印每个容器的袋子重量清单。行李袋示例字符串的示例输出为:
Container 1: 16 24
Container 2: 25 3 20
Container 3: 18 7 17 4
Container 4: 15 13 22
Container 5: 2 12 10 5 8 1 11
Container 6: 21 19 6
Container 7: 23 9 14
我当前的代码无法创建容器,我现在正在寻找一种更好的方法来做到这一点。
public static void insertBagsContainer() {
ArrayList<ArrayList<Integer>> containerArray = new ArrayList<ArrayList<Integer>>();
int tempSum = 0;
int x=0;
for(int i=0; i<bags.size()-1; i++){
tempSum = 0;
ArrayList<Integer> innerBags = new ArrayList<Integer>();
while (tempSum<= containerWeight){
tempSum+= bags.get(x);
innerBags.add(bags.get(x));
x++;
}
containerArray.add(innerBags);
}
}