Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2022, 00:26   #1
Kilodayt
Новичок
Джуниор
 
Регистрация: 24.07.2022
Сообщений: 3
По умолчанию python задача

У программиста есть ряд задач на n дней, время выполнения которых находится в массиве time . Задачи расположены строго в порядке приоритета выполнения. Программист не хочет перерабатывать, а хочет больше заниматься хобби и отдыхать: ему надо распределить задачи так, чтобы они занимали как можно меньше времени в течение каждого дня.

Найдите длительность самого долгого рабочего дня в минутах. Менять местами задачи нельзя, выполнять их можно строго в порядке приоритета: последовательно двигаясь по массиву.

Ввод:

time[] — целочисленный массив, включающий время выполнения каждой задачи, 0<time[i]<500, 1<length(time)<15 .
n — количество дней, 0<n<10 .

Вывод:

integer — количество минут в самый длинный рабочий день.

print(get_result([100,90,80,70,60],4)) #130: лучше всего сделать так: в первый день 100, во второй 90, в третий 80,а в последний 70+60=130
print(get_result([180,90,110,200,140],4)) #200: 180->90+110->200->140
Kilodayt вне форума Ответить с цитированием
Старый 26.07.2022, 02:25   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Количество задач и дней позволяет просто перебрать все варианты распределения задач по дням. Пусть T = length(time), тогда нужно выбрать из T - 1 возможных мест разделения задач n - 1 мест, по которым разделить список time. Количество вариантов равно числу сочетаний (Сочетание). Можно самому генерировать варианты или воспользоваться combinations из модуля itertools. Останется только делить список по индексам, искать суммы каждого подсписка, затем искать максимум из этих сумм. Это для одного варианта разделения списка, а среди всех вариантов искать минимум. При правильном комбинировании min, max, map, sum, zip и combinations можно всё решить в одну строчку.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложная задача на С++ Silver_561 Помощь студентам 17 21.05.2022 15:54
VBA Код сложная задача.. Slavatron1984 Microsoft Office Excel 4 01.09.2013 21:41
Не сложная задача maxwel6064 Паскаль, Turbo Pascal, PascalABC.NET 1 02.01.2012 13:56
Сложная задача! Pashok6 Паскаль, Turbo Pascal, PascalABC.NET 10 02.01.2012 00:03
задача на вид сложная erik2 Microsoft Office Excel 3 21.02.2011 01:16