Я готовлюсь к экзамену и готовлюсь к задаче, которая требует от меня реализации жадного алгоритма.
Мне дан несортированный массив разных весов, где 0 , а не поместить два веса в кучу, где один сверху больше, чем ниже.Я также должен соблюдать порядок весов, поэтому они должны быть расположены в порядке.Для стопки нет ограничения по высоте.
Пример: если у меня есть веса {53, 21, 40, 10, 18}, я не могу поставить 40 выше 21, потому что стопка должна быть в порядке убывания, иЯ не могу поставить 21 выше 40, потому что это не соответствует порядку.Оптимальное решение будет иметь кучу 1: 53, 21, 10 и кучу 2: 40 18
Мое общее решение - итерация по массиву и всегда выбор первой кучи, которой разрешен вес.Я считаю, что это даст мне оптимальное решение (хотя я еще не доказал это).Я не мог найти контрпример к этому.Но это было бы O (n ^ 2), потому что в худшем случае я должен перебирать каждый элемент и каждую кучу (я думаю)
Мой вопрос, есть ли способ свести это к O (n)или O (nlogn)?Если есть, я просто не вижу этого и нуждаюсь в помощи.