Я пытаюсь сделать простую программу упаковки бина.У меня есть N блоков произвольного размера, мне нужно поместить все N блоков внутри ленты, чтобы иметь как можно меньшую высоту
Блоки инициализируются так же хорошо, как и лента.Я читаю технику, чтобы решить эту проблему, я собираюсь сделать схему, чтобы она была более понятной:
Итак, что я пытаюсьчтобы сделать это, что следующий блок должен быть нарисован в месте, где я поставил красную точку.Он будет все время проверять нижнюю левую точку: если он может вписаться, тогда все в порядке, если он не может, он попробует другую красную точку.
У меня есть ArrayList, который содержитблок, блоки ранжируются от самого высокого до самого маленького.
Извините, если я не очень хорошо объясняю, английский не мой основной язык.
Вот мои блоки и код ленты:
public Block() {
this.x = 0;
this.y = 0;
this.height = 20 + rand.nextInt(80 - 10);
this.weight = 10 + rand.nextInt(50 - 10);
//this.placeDispo = this.largeur;
//this.hauteur = 30;
//this.largeur = 30;
id = genID.getAndIncrement();
this.color = new Color(0 + rand.nextInt(255),
(0 + rand.nextInt(255)),
(0 + rand.nextInt(255)));
}
public Ribbon() {
randomGenerator = new Random();
this.weight = 100 + randomGenerator.nextInt(580 - 100);
this.height = 100; //ça doit être a l'infini
listBlockInRibbon = new ArrayList<Bloc>();
listBlocksRemaining = new ArrayList<Bloc>();
}
Сердечно