Учитывая массив из n неотрицательных чисел, задача состоит в том, чтобы найти минимальную сумму элементов (выбранных из массива), чтобы по крайней мере один элемент выбирался из каждых 3 последовательных элементов в массиве.
Примеры :
Input : arr[] = {1, 2, 3} Output : 1 Input : arr[] = {1, 2, 3, 6, 7, 1} Output : 4 We pick 3 and 1 (3 + 1 = 4) Note that there are following subarrays of three consecutive elements {1, 2, 3}, {2, 3, 6}, {3, 6, 7} and {6, 7, 1} We have picked one element from every subarray. Input : arr[] = {1, 2, 3, 6, 7, 1, 8, 6, 2, 7, 7, 1} Output : 7 The result is obtained as sum of 3 + 1 + 2 + 1
Пусть sum (i) будет минимально возможной суммой, когда arr [i] является частью суммы решения (не обязательно является результатом) и является последним выбранным элементом. Тогда наш результат — минимум суммы (n-1), суммы (n-2) и суммы (n-3) [Мы должны выбрать хотя бы один из трех последних элементов].
Мы можем рекурсивно вычислить сумму (i) как сумму arr [i] и минимума (сумма (i-1), сумма (i-2), сумма (i-3)). Поскольку в рекурсивной структуре задачи есть перекрывающиеся подзадачи , мы можем использовать динамическое программирование для решения этой проблемы.
Ниже приведена реализация вышеуказанной идеи.
|
Джава
|
python3
|
C #
|
PHP
|
Выход:
Min Sum is 4
Сложность времени: O (n)
Вспомогательное пространство: O (n)
Эта проблема и решение внесены Аюшем Салуджей . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Минимальная сумма подпоследовательности такая, что выбирается хотя бы один из каждых четырех последовательных элементов
- Удалите минимальные элементы из массива так, чтобы ни один из трех последовательных элементов не увеличивался или не уменьшался
- Найти элементы массива, используя XOR последовательных элементов
- Найти минимальные элементы после рассмотрения всех возможных преобразований
- Найти минимальную разницу между любыми двумя элементами
- Найти первый, второй и третий минимальные элементы в массиве
- Найти минимальную разницу между любыми двумя элементами | Набор 2
- Найти индекс такой, чтобы разница между произведением элементов до и после него была минимальной
- Найти минимальные изменения, необходимые в массиве, чтобы он содержал k различных элементов
- Отразите минимальные знаки элементов массива, чтобы получить минимально возможную сумму положительных элементов
- Найти минимально возможный размер массива с заданными правилами для удаления элементов
- Рекурсивные программы для поиска минимальных и максимальных элементов массива
- Найдите минимальное количество элементов, которые должны быть удалены, чтобы сделать массив хорошим
- Заменить элементы массива суммой следующих двух последовательных элементов
- Найти минимальное количество операций, необходимых для выравнивания всех элементов массива
0.00 (0%) 0 votes