Создайте все возможные комбинации множества размеров n, имеющих ровно k subarraysJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Создайте все возможные комбинации множества размеров n, имеющих ровно k subarrays

Сообщение Anonymous »

Это проблема комбинаторики. Мы можем разделить массив на максимальную n-1 раз и выходить из него, мы должны выбрать разделы K-1.
ex: arr [] = {1, 2, 3, 4, 5, 6}
k = 3, n = 6.
Тотальная возможностей = (n-1) c (k-1) . /> ожидаемый выход: (3-мерный массив) < /h2>
[
[[1], [2], [3, 4, 5, 6]],
[[1], [2, 3], [4, 5, 6]],
[[1], [2, 3, 4], [5, 6]],
[[1], [2, 3, 4, 5], [6]],
[[1, 2], [3], [4, 5, 6]],
[[1, 2], [3, 4], [5, 6]],
[[1, 2], [3, 4, 5], [6]],
[[1, 2, 3], [4, 5], [6]],
[[1, 2, 3, 4], [5], [6]],
]
< /code>
ограничения: < /p>

Субарры должны иметь как минимум 1 элемент. < /li>
Субары должны состоять только из последовательных элементов.
для ex: [1, 3], [2, 4], [5, 6]]. /> До сих пор я пробовал рекурсивный метод, но он дает неправильные результаты. Я не могу обернуть голову вокруг, как это исправить. Мне нужен ответ, объясняющий, как правильно подходить к этой проблеме, а интуиция сначала за ней, а затем исправить мой код и указать, где я ошибся. public static void main(String[] args) {
int n = 6;
int k = 3;
int[] arr = new int[]{1,2,3,4,5,6};
ArrayList result = new ArrayList();
ArrayList eachComb = new ArrayList();
ArrayList eachSubArray = new ArrayList();
int index = 0;

generateCombinations(arr, k, index, eachSubArray, eachComb, result);

for (ArrayList each : result) {
for(ArrayList eachh: each) {
System.out.println(eachh);
}
System.out.println("-------------------------------");
}
}

private static void generateCombinations(int[] arr, int k, int index, ArrayList eachSubArray,
ArrayList eachComb, ArrayList result) {

if(k==0 || index==arr.length) {
return;
}

if(!eachSubArray.isEmpty()) {
eachComb.add(new ArrayList(eachSubArray));
}

if(k==1) {
ArrayList last = new ArrayList();
for(int i=index; i

Подробнее здесь: https://stackoverflow.com/questions/752 ... y-k-subarr
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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