Дана последовательность чисел, размером скажем до миллиона.
Надо найти подпоследовательность (без разрывов) с максимальной суммой.
Единственное что надумал - сделать так:
1. Разделяем (мысленно) последовательность на участки с положительными членами и отрицательными, и суммируем все участки.
2. Заводим список в котором каждый элемент отвечает за каждый участок, значение его - сумма элементов (либо >0 либо <0).
3. Теперь алгоритм: проходим по списку и сравниваем a[n] + a[n+1] + a[n+2] и max(a[n], a[n+1], a[n+2]), если первое больше второго, то объединяем n, n+1 и n+2 узлы. Если таких объединений не было, алгоритм завершён. По ходу дела нетрудно учитывать границы, и в конце надо просто запомнить максимальную сумму и будет ответ.
Алгоритм вроде неплохой, но его сложность в худшем случае кажется O(n^2), для n ~ 1e6 это плохо.. Мне так и не удалось придумать ничего подходящего..
Я понимаю, что эта задача не совсем программисткая, но всё-же, может кто придумает что-нибудь =)
Ответ на:
комментарий
от Selecter
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от erDiZz
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от no-dashi
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от erDiZz
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от erDiZz
Ответ на:
комментарий
от no-dashi
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от erDiZz
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от kosmonavt
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от kosmonavt
Ответ на:
комментарий
от erDiZz
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от sarg
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от Die-Hard
Ответ на:
Отрицательные числа
от DKorolkov
Ответ на:
комментарий
от kosmonavt
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от Legioner
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Решите задачку. (2008)
- Форум Помогите решить задачку. (2016)
- Форум Помогите решить задачку (2017)
- Форум Прикольная задачка. Решите? (2010)
- Форум Кто решит задачку? (2013)
- Форум Помогите решить задачку! (2008)
- Форум Помогите решить задачку (2004)
- Форум Слабо решить задачку? (2007)
- Форум Помогите решить задачку (2006)
- Форум давайте дружно решим задачку (2015)