我尝试使用Next Fit在线实现bin打包算法。所以我事先并不知道盒子的大小。无论如何,我有一个高度和宽度的Box类。一个列类,表示和堆栈的盒子和一个Truck类,它包含盒子的堆栈,如果卡车装满了,则为布尔值。
然而,当我在我的测试课程中时,我会生成一个盒子列表和一个用来装盒子的卡车列表。我将卡片添加到每辆卡车,当卡车几乎没有空间时,最后一个盒子试图加入,它不适合,所以布尔值isFull设置为true,但是进入方法然后丢失。如何将卡盒添加到卡车中,如果卡满了,请在下一辆卡车的电话中使用相同的盒子?
非常感谢
码
public void addBoxesNextFit(Box b)
{
if(truck.isEmpty()) // easy first case
{
*make a new column*
*add box to column and add column to truck*
}
else
{
*Get the last column in list*
if(remainingHeight in column > BoxesHeight && widthOftheColumn > boxesWidth)
{
*add box to column*
*add column to truck*
boxesInTruck++;
}
else if(there is enough space to make another column with the box)
{
*Make new column*
*add box to column and column to truck*
boxesInTruck++;
widthofAllColumns += b.getWidth(); //update width of all columns
}
else
{
truckFull = true; // if u can't add the box to 1 of the columns and you can't create a new column
} // then the truck is full
}
}