我正在尝试生成一个包含整数数组的所有可能组合的数组的数组;排除空集和原始集本身。这是我写的代码。外循环一直运行,直到要包含在子集中的元素数等于原始集中的元素数。外部for循环运行以添加新子集的所有元素以及一个附加元素。例如,循环应该通过:A,B然后添加C,然后添加D;生成A,B,C和A,B,D。然后子集应转移到B,C并加D以得到B,C,D。此过程将继续,直到创建所有子集。但是我得到一个超出范围的数组索引。
double pow = Math.pow(2.0, a.length);
char[][] b = new char[(int)pow-2][a.length-1];
int start = 0;
int end = 0;
int includedElements = 1;
int curI = 0;
while(includedElements<=a.length) {
if(end == a.length) {
start = 0;
includedElements+=1;
end = includedElements-1;
}
for(int h = end+1; h<a.length; h++) {
b[curI] = new char[includedElements];
for(int i = start, index = 0; i<=end; i++, index++) {
b[curI][index] = a[i];
}
b[curI][b[curI].length] = a[h];
}
curI++;
start+=1;
end+=1;
}