Посчитать горные массивы [закрыто] ⇐ JAVA
-
Anonymous
Посчитать горные массивы [закрыто]
Горный массив имеет следующие особенности:
[*]все элементы в массиве разные [*]Размер массива равен A, что нечетно. [*]элементы от 1 до A/2 увеличиваются. [*]оставшиеся элементы справа уменьшаются [*]элемент в позиции (A/2 +1) является максимальным
Для заданного размера массива A и диапазона чисел от [1, B] включительно подсчитайте, сколько возможных горных массивов.
Подсчитайте все возможные различные горные массивы для данных A и B.
Например:
A = 3, B = 4 Возможные массивы: 8
1 3 2 2 3 1 1 4 3 3 4 1 2 4 3 3 4 2 1 4 2 2 4 1 У нас есть 8 возможных горных массивов. поэтому результат 8. Моя идея состоит в том, чтобы сгенерировать все возможные массивы размера A, используя цифры от 1 до B, и определить, является ли это горным массивом или нет. Но мой подход требует много времени. Каков правильный подход к решению этой проблемы?
Это мой код для генерации всех возможных перестановок:
импортировать java.util.ArrayList; импортировать java.util.List;
публичный класс Main { public static void kSubsetPermutations(String частично, List set, int k) { for (int element: set) { если (к == 1) { System.out.println(частичный + элемент); } еще { List copyOfSet = новый ArrayList(set); copyOfSet.remove(Integer.valueOf(элемент)); kSubsetPermutations (частичный + элемент, copyOfSet, k - 1); } } } public static voidsolve(int A, int B) { List list = new ArrayList(); for(int i=1; i
Горный массив имеет следующие особенности:
[*]все элементы в массиве разные [*]Размер массива равен A, что нечетно. [*]элементы от 1 до A/2 увеличиваются. [*]оставшиеся элементы справа уменьшаются [*]элемент в позиции (A/2 +1) является максимальным
Для заданного размера массива A и диапазона чисел от [1, B] включительно подсчитайте, сколько возможных горных массивов.
Подсчитайте все возможные различные горные массивы для данных A и B.
Например:
A = 3, B = 4 Возможные массивы: 8
1 3 2 2 3 1 1 4 3 3 4 1 2 4 3 3 4 2 1 4 2 2 4 1 У нас есть 8 возможных горных массивов. поэтому результат 8. Моя идея состоит в том, чтобы сгенерировать все возможные массивы размера A, используя цифры от 1 до B, и определить, является ли это горным массивом или нет. Но мой подход требует много времени. Каков правильный подход к решению этой проблемы?
Это мой код для генерации всех возможных перестановок:
импортировать java.util.ArrayList; импортировать java.util.List;
публичный класс Main { public static void kSubsetPermutations(String частично, List set, int k) { for (int element: set) { если (к == 1) { System.out.println(частичный + элемент); } еще { List copyOfSet = новый ArrayList(set); copyOfSet.remove(Integer.valueOf(элемент)); kSubsetPermutations (частичный + элемент, copyOfSet, k - 1); } } } public static voidsolve(int A, int B) { List list = new ArrayList(); for(int i=1; i
Мобильная версия