如何将数组的内容分为两个水桶并获取所有组合?
例如:阵列[A,B,C]
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);
}
}
首先考虑要表示解决方案的数据结构:对于对象的一个分区,每个对象都在存储桶1中或桶2中,因此可以使用一个位来描述这一点。然后,如果您有n个对象要分开,则可以用一串n位表示一个分区。
使用该数据结构,所有部门的集合均由所有n个二进制数字的列表组成,如果i-thit为0,则该项目I位于桶1中,如果I-th,则在桶2中位是1。
这会给您您的追求吗?