Task 59. Заказы

Task 59. Заказы

UniLecs

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

Дано время t, ктр имеется в распоряжении фирмы и массив, ктр содержит значения стоимости заказов.

Напишите функцию, ктр выведет максимальную заработанную сумму денег, ктр можно получить в пределах доступного времени.

Например,

1. t = 3, Arr = [1, 1, 1, 1, 1]; 

Вывод: 3

2. t = 4, Arr = [11, 2]

Вывод: 13

3. t = 4, Arr = [8, 2, 9, 17, 4, 4, 10]

Вывод: 44

Идея: задача из раздела так называемых жадных алгоритмов. Очевидно, что фирме выгодней выполнять заказы с наиболее высокой стоимостью. Нужно просто отсортировать массив заказов и найти сумму стоимостей t наиболее ценных из них. Если t >= кол-ву элементов массива, то следует выполнить все заказы.

Реализация:

реализация на C#

https://gist.github.com/unilecs/b53334bae70ae3d007950af4321355d2


Тест:

https://dotnetfiddle.net/rA8RvR

Report Page