Есть ли более эффективный способ создания всех комбинаций элементов массива?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли более эффективный способ создания всех комбинаций элементов массива?

Сообщение Anonymous »

Вот рекурсивное решение для создания всех комбинаций элементов массива.

Код: Выделить всё

import java.util.List;
import java.util.ArrayList;

public class Combinations {

public static List generateCombinations(int[] arr) {
List result = new ArrayList();
List current = new ArrayList();
generate(arr, 0, current, result);
return result;
}

private static void generate(int[] arr, int index, List current, List result) {
if (index == arr.length) {
result.add(new ArrayList(current));
return;
}

current.add(arr[index]);
generate(arr, index + 1, current, result);

current.remove(current.size() - 1);
generate(arr, index + 1, current, result);
}

public static void main(String[] args) {
int[] arr = new int[] {1, 2, 3, 4, 5};
List combs = generateCombinations(arr);
System.out.println(combs);
}
}
К сожалению, это решение недостаточно быстрое для некоторых задач, которые я решаю. Есть ли более быстрый и эффективный способ создания всех комбинаций элементов массива?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-an-arr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»