0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 101
|
|
1 | |
Рекурсия: найти непрерывную часть массива, чтобы сумма элементов была максимальной31.10.2013, 22:21. Показов 1751. Ответов 7
Метки нет (Все метки)
массив из случайных целых чисел от -1000 до 1000. задача найти непрерывную часть этого массива чтобы сумма элементов была максимальной
0
|
31.10.2013, 22:21 | |
Ответы с готовыми решениями:
7
Найти непрерывную часть массива, чтобы сумма элементов была максимальной В двухмерном массиве n × n найти диагональ, параллельную главной диагонали, сумма элементов которой была бы максимальной. Найти сумму наибольших элементов матрицы, чтобы сумма была наибольшей Представить заданное число в виде произведения двух натуральных чисел, чтобы их сумма была максимальной |
82 / 82 / 44
Регистрация: 14.07.2013
Сообщений: 410
|
|
01.11.2013, 00:51 | 2 |
и как понять ваше условие? по сравнению с чем сума скольких елементов должна быть максимальной? В каком смысле неприрывную?
0
|
Почетный модератор
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
||||||
01.11.2013, 10:55 | 3 | |||||
IchimaruGin, я думаю так:
0
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
01.11.2013, 11:35 | 4 |
Наверное не arr[0], а просто -1?
Надеюсь, что эту задачу дали как пример того, когда не надо использовать рекурсию. А то у нее будет просто ужасная алгоритмическая сложность - из-за постоянных перевычислений одного и того же. SatanaXIII тоже предложил не самый лучший алгоритм - у него O(n*n). А задача решается с помощью динамического программирования - один раз проходим циклом по массиву, на каждой позиции находя максимальный подмассив, кончающийся на этой позиции. Тогда сложность - О(n).
0
|
Почетный модератор
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
|
01.11.2013, 12:03 | 5 |
Почему?
Зато проигрыш в памяти. Потом все равно потребуется еще один проход, но уже по созданному массиву.
0
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
01.11.2013, 12:51 | 6 |
Ну потому что иначе странно - ты инициализируешь по сути случайными значениями массива, а потом пихаешь туда индексы.
Там нету проигрыша в памяти, потому что мы ничего не создаем: http://en.wikipedia.org/wiki/M... ay_problem Кстати, даже если бы понадобился еще один проход, то это все равно О(n), а не O(n*n). И даже если бы использовалась дополнительная память, то производительность все равно в 90% случаев важнее.
0
|
Почетный модератор
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
|
01.11.2013, 13:18 | 7 |
Действительно.
Только не -1, а 0. n то у нас больше чем ноль - защита не нужна. Спасибо. Почитал.
0
|
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
|
||||||
01.11.2013, 13:40 | 8 | |||||
Вот мой вариант решения задачи. Алгоритм - получение методом перебора всех под-последовательностей элементов с каждой позиции в массиве. Далее вычисление суммы элементов каждой из под-последовательностей, далее нахождение наибольшей суммы.
0
|
01.11.2013, 13:40 | |
01.11.2013, 13:40 | |
Помогаю со студенческими работами здесь
8
Отсортировать строки массива так, чтобы первой шла строка, сумма элементов которой была меньше, чем остальных Отсортировать строки массива так, чтобы первой шла строка, сумма элементов которой была меньше, чем остальных Найти число, меньше заданного, в котором сумма цифр была бы максимальной Представить число N в виде суммы M натуральных слагаемых так, чтобы сумма синусов слагаемых была максимальной Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |