Я пытаюсь создать массив, содержащий массивы всех возможных комбинаций целочисленного массива; исключая пустой набор и сам исходный набор. Это код, который я написал. Внешний цикл выполняется до тех пор, пока количество элементов, которые должны быть включены в подмножество, не сравняется с количеством элементов в исходном наборе. Внешний цикл 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;
}