Я не уверен, как это объяснить очень хорошо, поэтому, пожалуйста, отредактируйте и спросите, если это будет необходимо. Я думаю, что это может иметь математическое решение. Я пытаюсь найти все способы, которыми элементы могут быть объединены вместе, чтобы предварительно вычислять их. Каждый из элементов имеет определенные веса и значения, и конечная цель состоит в том, чтобы минимизировать стоимость объединения заданного количества элементов. Когда предметы объединены, порядок имеет значение.
Скажем, есть три предмета. Есть левый и правый слот, в который можно помещать предметы. Имеет значение, если предметы объединены с одним предметом, находящимся в другом слоте. Я ищу помощь в поиске всех возможных способов объединения количества предметов. Таким образом, направление объединения двух предметов имеет значение, а также порядок объединения предметов.
Примеры:
a, b можно объединить как
- a- > b
- b-> a
a, b, c можно комбинировать как
- a-> b -> c
- c -> a-> b
- a -> c -> b
- b -> a -> c
- b-> a -> c
- c -> b-> a
- b -> c -> a
- a -> b -> c
- c -> b -> a
- a -> c -> b
- c -> a -> b
- b -> c -> a
Более короткие стрелки указывают, какая из них объединяется первой, а более длинная указывает на быть объединенным после того, как первые два пункта объединены. Я не делал вручную с 4-мя предметами и далее. «Направление» объединения двух предметов ie. b -> c -> a vs c -> a -> b - это то, что мне действительно трудно вставить в код.
Напоминает ли это кому-либо о математических отношениях или Алгоритм, который был использован ранее? Я использую java, я пробовал перестановки и комбинировал их в порядке перестановки, но он не учитывает "направление" объединения двух предметов.