Найдите максимальную сумму элементов массива целочисленного типа внутри массива (содержащую хотя бы одно число). Запрещено: использовать полный перебор, алгоритмы O(N³), O(N²). Пример: Входные данные: [-6, 3, 4, -1, -5] Выходные данные: 7
>>233516940 Там не два числа находить нужно, а максимальную сумму я хз как назвать маленького массива. Как я понял. Если бы массив в оп посте был бы [-6, 4, -1, 3, -5], то выходные данные были бы 6, а не 7. Я эту хуйню могу решить только полным перебором, а нельзя.
>>233516097 (OP) Берешь и ищешь суммы подмассивов размером от 1 до N. При поиске - запоминает максимальную. Если решать "в лоб" - получается кубическая сложность, но ее использовать нельзя, но это и не нужно. Можно обход оптимизировать и получить квадратичную сложность.
БЛЯДЬ КАК У МЕНЯ ОЧКО ГОРИТ, СУКА. ЭТОТ ДОЛБОЕБ ПРЕПОД СКАЗАЛ ЗАДАЧКА БЛЯ ИЗИ ЛЮБОЙ ЕБЛАН СДЕЛАЕТ ЗА 3 СЕКУНДЫ. БЛЯЯЯЯЯЯЯТЬ СУКА ЕБАЛ ЕГО РОТ С ЕГО О(N) И ЭТО НЕЛЬЗЯ ТО НЕЛЬЗЯ.
>>233517739 Я тебе дал запрос в Гугл который первой ссылкой выдаст код который можно буквально скопировать и вставить Как ты штаны надеваешь с таким уровнем интеллекта ?
>>233517918 Я нагуглил и нихуя не понял, там про бинарные деревья, про нахождение искомой суммы и написано коротко и непонятно хуле мне делать. Я долбоеб получается и забываю надевать штаны по утрам иногда, хуле ты хочешь?
>>233516097 (OP) >Найдите максимальную сумму элементов массива целочисленного типа внутри массива >>233518769 >а не выдает наибольшую сумму подмассива Ебать ты дурачок, я сьебал с треда.
>>233519032 Ну короче, вот например массив {-2, -3, 4, -1, -2, 1, 5, -3} Тебе нужно узнать максимальную сумму подмассива рядом стоящих чисел, оно может быть хоть одним числом. В данном случае максимальная сумма 7 потому что максимальная сумма подмассива 4 + -1 + -2 +1 + 5, выше этой суммы суммы последовательных элементов нет. Объяснил как мог.
>>233519379 >Там условие прекращение перебора есть
Там есть условие прекращения суммирования в ymax а не перебора. То полный перебор это походу каждый с каждым, а не полный проход по массиву, так что я имел ввиду не то, что имеют ввиду в этой задаче. Но ты хуйню объяснил
>>233519525 > Там есть условие прекращения суммирования в ymax Это и есть условие прекращения перебора. Данная ветвь отсекается как ненужная и алгоритм идет дальше. Все элементы со всеми не перебираются благодаря этому условию.
>>233520405 Ах, да, забыл написать вам логику ответа: ведем 2 суммы, текущую и максимальную. Инициализируем их нулевым элементом.
Идем по всем элементам начинаея с первого. На каждом ходу прибавляем к текущей сумме следующий элемент. Если текущая сумма больше максимальной, то записываем текущую в максимальную. Иначе, если текущая сумма меньше нуля, принимаем её за нуль.
>>233518226 >Я долбоеб получается и забываю надевать штаны по утрам иногда Пиздуй дворы мести тогда, хули ты чье-то место на учебе занимаешь, если не осиливаешь.
>>233519032 Я так понял, что ты можешь просуммировать любые числа из массива как тебе хочется и должен получить максимально возможно число. Тут я вижу два случая. Если у тебя есть числа больше нуля, то ответ это сумма положительных чисел. Если только числа меньше или равные нулю, то ответ это максимальный элемент. Вообще можно решить в один проход, идёшь по элементам и запоминаешь максимально число пока не встретишь положительный элемент. Если до конца не встретил положительный элемент, то ответом выдаёшь максимальное число. Если встречаешь положительный элемент, то начинаешь все встречающиеся положительные элементы суммировать на выход. Вроде простая задача, но вот сформулирована по ебаному, пришлось блядь вникать и понимать, что за хуйню от тебя хотят.
>>233516097 (OP) Ищешь, есть ли неотрицательные числа. Если есть хотя бы одно, то ответ - сумма всех неотрицательных чисел. Если таковых чисел не нашлось, то ответ - наибольшее отрицательное число. Итоговая сложность: O(N).
>>233522961 Ты кстати не один такой оригинальный, кто неправильно понял условие задачи Сам факт того, что в условии написано, что переборы за O(N^2) и O(N^3) как бы намекает, что ты пидор нужно оптимизировать сумму не любого подмножества, а подмассива
>>233531145 Можешь не пытаться, новички треда не будут это читать. И будет у нас ещё +100 сообщений "Ну так сумма положительных чисел элементарно, где мои 300кк"
>>233531598 Ты же понимаешь, что сортировка и реверс в твоём решении бесполезны, они никак не влияют на знак чисел, а значит и на ответ. Но при этом они съедают нехилое количество времени
>>233532218 > что сортировка и реверс в твоём решении бесполезны, они никак не влияют на знак чисел, а значит и на ответ На ответ не влияют, но тогда можно сделать НЕПОЛНЫЙ ПЕРЕБОР. полный нельзя по условию задачи
>>233532218 > что сортировка и реверс в твоём решении бесполезны, они никак не влияют на знак чисел, а значит и на ответ На ответ не влияют, но тогда можно сделать НЕПОЛНЫЙ ПЕРЕБОР. полный нельзя по условию задачи
>>233532508 Ну мы знаем вывод. Есть ящик с хуями и яблоками, тебе надо вынуть все яблоки не вынимая всех хуев. Сколько яблок на выходе мы знаем из условий. Но тут говно итт развонялось про другие примеры.
>>233532554 Я так понимаю, под полным перебором имеется в виду перебор всех возможных отрезков массива ненулевой длины. Просто по элементам массива можно пройтись константное число раз.
>>233532254 ОБЪЯСНЯЮ РУССКИМ ЯЗЫКОМ ОДИН РАЗ Есть у тебя массив, из него нужно найти наибольшую сумму последовательных элементов. Т.е. никаких сортировок не предполагается. Это нужно сделать за линейное время O(N), потому что это же можно сделать за квадратичное и кубическое время, что не подходит да и зачем. Алгоритм работает так, что в одном проходе сразу подсчитывает сумму элементов, присваивая потенциальный максимум значения и суммы первому элементу массива. Дален если сумма получается отрицательной, то сбрасывает значение суммы до нуля. Плюс получившаяся ранее сумма постоянно сравнивается с текущим максимумом. Т.о. ты или получишь максимальную сумму какого-то подмассива или максимальное значение элемента массива, если не нашлось суммы превосходящей ее.
>>233518607 >>233518814 >>233518932 >>233519322 >>233520045 >>233531663 Поясняю раз и навсегда: Под перебором в этой задаче подразумевается просчёт сумм ВСЕХ подотрезков за O(N^3) или O(N^2) с преподсчётом Всё, что работает быстрее - приемлимый алгоритм (оптимально будет за O(N))
>>233533269 > Дебилы блять, в школе задачи так яро не решали, а как на дваче так все строят из себя профессоров и начинают кудахтать "ЭТО ПЕРЕБОР, КОКОКО"
>>233532933 Двачую, решение максимум изи. Оп - шизик def max_subarray(numbers): """Find the largest sum of any contiguous subarray.""" best_sum = 0 # or: float('-inf') current_sum = 0 for x in numbers: current_sum = max(0, current_sum + x) best_sum = max(best_sum, current_sum) return best_sum
>>233532962 Идешь по массиву вперед, выбираешь субмассивы и суммируешь их. Одновременно сохраняешь в стейт максимальную сумму и субмассив.
Всё. Компилятор, исполнитель байткода, процессор оптимизируют операцию сложения субмассива до одной конвеерной. По факту сложность O(n*m) где m размер субмассива. В реале O(n) ибо сложение всех элементов маленького массива проц съест чуть ли не в один такт.
>>233533473 >Компилятор, исполнитель байткода, процессор оптимизируют операцию сложения субмассива до одной конвеерной
Кто так сказал? Интел вовсю долбятся, чтобы научить процессор складывать больше 64 чисел в один такт. А у тебя так это ещё и фича компилятора. Выйди из манямирка, твое решение за O(N^3) Первая N - за проход по массиву, вторая - за перебор подмассивов, третья - за суммированияесли ты не поддерживаешь частичные суммы
>>233533722 Ты чувствуешь эту несостыковку в твоих определениях? У челиков полный перебор (верное решение) работает за O(N), а у тебя неполный - O(N log N)
>>233534145 >У челиков полный перебор (верное решение) работает за O(N), а у тебя неполный - O(N log N) qsort - Один из самых быстрых известных универсальных алгоритмов сортировки массивов
>>233534267 И чё, нахуй ты это высрал? 10^6 = 10^6 10^6 * Log(10^6) = 19000000 На миллионе чисел твоё решение в 19 раз медленнее эталонного которое по твоему полный перебор
>>233534499 O(n) и O(n^2) - нельзя использовать по условию задачи. O (n log n) - можно. Отсортированный массив уже можно брать для анализа неполным перебором. Неполный перебор по условию задачи - можно.
>>233534676 > Решает не ту задачу (уже 5 раз люди поправили, что именно нужно искать) > Для не той задачи использует алгоритм с бесполезными нагромождениями, жертвуя временем > Использует своё вымышленное определение переборачек >>233532962 тут адекватно всё объяснено > Считает себя умным и достойным внимания
>>233535287 >Решает не ту задачу задачу, которую написали в оп посте >>233535287 >Для не той задачи использует алгоритм с бесполезными нагромождениями Алгоритм, сложность которого разрешена по условию задачи и является быстрым, включен в стандартные функции языка >Использует своё вымышленное определение перебора Ну это уже максимум долбаебизм с твоей стороны, очень толсто > Считает себя умным Да >и достойным внимания На анонимном форуме, лол? нет >Ты наверно седьмой класс ещё не окончил? А ты, наверное, окончил еще и бесполезный институт, чтобы не суметь в аргументацию со мной?
>>233535725 >задачу, которую написали в оп посте Сам ОП потом написал, что хуево описал задачу и сделал поправку про подмассивы
>Является быстрым По сравнению с >>233533420 твоё решение медленно (запусти его на миллионе случайных чисел и то тебя дойдет)
>Ну это уже максимум долбаебизм с твоей стороны, очень толсто Люди несколько раз описали, что в этой задаче имеется под перебором. И ты до сих пор считаешь, что обычный фор - уже перебор
>На анонимном форуме Ты 4 раза скинул своё решение на обозрение, ты явно хочешь положительных комментариев для самоудовлетворения
>чтобы не суметь в аргументацию со мной? Покажи мне хоть один свой аргумент
>>233516097 (OP) Парень, очень сложно дать ответ на невнятный вопрос. Я ппавильно понимаю что нужно найти подмассив в исходном массиве с макс суммой? Если да, то дяди в треде которые упоминали Кнута или Кормена уже дали тебе правильный ответ.
>>233516097 (OP) def i_dont_give_a_fuck(arr): m = max(arr) if m <= 0: return m else: arr = list(filter(lambda x:x>0, arr)) x = lambda a:(not a)*1 or a.pop()+x(arr) return x(arr)-1
>>233516097 (OP) def i_dont_give_a_fuck(arr): m = max(arr) if m <= 0: return m else: arr = list(filter(lambda x:x>0, arr)) x = lambda a:(not a)*1 or a.pop()+x(arr) return x(arr)-1
>>233537084 >А кодинг это именно про реальные осязаемые задачи прикладные. Двачую, хуяк хуяк, комит, пуш в продакшн. Это вообще пидарашкино образование когда седые мудели ебут тем кто кодить то не умее мозги тиками и временем выполнения.
>>233536435 >Сам ОП потом написал, что хуево описал задачу и сделал поправку про подмассивы
Он написал, что учится на иную профессию: >Я итак не на погромиста учусь, а мне задачи задают как будто я в гугл устраиваюсь.
Поэтому про задачу с подмассивами и с иным пониманием перебора скинул какой-то тролль-байтоеб, очевидно же.
Решение уровня >>233533420 это, во-первых, сложно даже для его препода-пенсионера с перфокарточками головного мозга, во-вторых тянет куда больше строк, чем простое решение моё.
>По сравнению с >>233533420 твоё решение медленно (запусти его на миллионе случайных чисел)
Это студенческая задачка, а не байтоёбство уровня гугла. И не вижу ничего медленного, если используется функция сортировки, которая быстрая.
>Люди несколько раз описали, что в этой задаче имеется под перебором Ясно, а еще они могут написать, придумав, что является под переменной - указатель на константу, в задаче их шизофренических маняфантазий нет.
>>233536435 >Ты 4 раза скинул своё решение на обозрение, ты явно хочешь положительных комментариев для самоудовлетворения 1. Описание как надо сделать 2. Ссылки на википедию, что так можно сделать (после критики долбаебов) 3. Сам код
РРРРЯЯЯЯЯЯЯЯЯЯЯЯЯЯ ИЩЕТ ВНИМАНИЯ КУДАХТАХТАХ
>>233536435 >Покажи мне хоть один свой аргумент Цитаты условия задачи, ссылки на вкикпедию о сложности алгоритмов.
Итак, подводим итоги: Под условие задачи мое решение полностью подходит (сложность алгоритма разрешена по условию, не полный перебор массива) и является простым (препод из под совка поймет) и быстрым (алгоритм функции сортировки быстрый, на студенческую задачу никто не будет вбивать миллион чисел).
>>233537546 Боже, почему ты такой додик? >Он написал... Смотри сюда >>233518541 , он сам поправил, что плохо написал условие
>скинул какой-то тролль-байтоеб, очевидно же Нет, лично мне очевидным было условие про подотрезки (потому что иначе это задача для детей и ты её не осилил и у челика не было бы проблем)
>сложно даже для его препода-пенсионера с перфокарточками головного мозга Ты сказал?
>куда больше строк В глаза долбишься?
>а еще они могут написать, придумав, что является под переменной - указатель на константу Сильный способ аргументировать свою позицию - сказать что мнение других ничего не значит. У них, в отличие от тебя, больше опыта в решении таких задач, и я им больше верю
>на студенческую задачу никто не будет вбивать миллион чисел Ничего не слышал про codeforces, informatics или тот же ЯКонтест?. Не поверишь, но как раз таки на студенческих задачах и вбивается по миллиону чисел
Ебать, смотри сюда, пендель лысый. Как решить задачу за о(н) (1 проход по массиву):
1. Назначить общую макс. сумму равной нулю, назначить текущую макс. сумму равной первому элементу.
2. Каждый элемент суммируется с текущей максимальной суммой, после чего она сравнивается с общей. Если текущая меньше общей, то элемент идёт нахуй, иначе общая сумма становится равной текущей. Если текущая сумма меньше нуля, она сбрасывается до нуля.
На примере твоего массива: [-6, 3, 4, -1, -5] (осторожно, далее дикий псевдокод):
>>233527374 > Ты кстати не один такой оригинальный, кто неправильно понял условие задачи Вы там ебанулись и читаете между строк? Нахуй мне ваши намеки? Че написано, то и решаю. Хоть не медленнее, чем O(N^N). Ваще похую.
>>233545014 Скажу как есть: я прорешал тыщи тыщ задач простых и сложных. И для меня это не просто чтение между строк. Тем более что версия с подотрезками куда более популярна