Как разбить содержимое массива на два ведра и получить все комбинации?Java-алгоритм для разбиения списка в кодах всех комбинаций
Например: Массив [А, В, С]
Bucket 1 Bucket 2
- ABC
A BC
BC A
AB C
C AB
AC B
B AC
ABC -
Число перестановок следует по формуле: 2^N, где N является длиной массива.
Вот код, который у меня есть. Однако он не проходит через все возможные комбинации:
for(int i=0; i<=testPortfolioArray.length; i++) {
Object[] bucket1 = Arrays.copyOfRange(testPortfolioArray, 0, i);
Object[] bucket2 = Arrays.copyOfRange(testPortfolioArray, i, testPortfolio.size());
if(i>0 && i<testPortfolioArray.length) {
bucket1 = Arrays.copyOfRange(testPortfolioArray, i, testPortfolio.size());
bucket2 = Arrays.copyOfRange(testPortfolioArray, 0, i);
}
}
Просьба предоставить любой код, логику и процессы, с которыми вы следовали, чтобы достичь этого, и мы можем предложить, где вы можете улучшить или исследовать. Во-первых, как вы, математически, достигнете того, что хотите? –
Как подсказка: просто найдите все возможные подмножества и поместите их в оба ведра. Например, «A-BC» совпадает с «BC-A», только части находятся в разных ковшиках. Нет необходимости вычислять это конкретное подмножество дважды. – Tom