Я работал над упражнением и наткнулся на проблему.
Учитывая массив целых чисел, определите, можно ли его разбить на два массива, каждый из которых находится в порядке возрастания. Например, 3,1,5,2,4 могут, но 4,8,1,5,3 не могут.
Проблема здесь. Я не мог понять, почему 1-й массив может, а 2-й не может.
Есть подсказка:
Если мы успешно разбили начальный сегмент массива, одна из частей должна содержать максимальный элемент, видимый до сих пор. Очевидно, что в наших интересах, чтобы самый большой элемент другой части был как можно меньшим. Таким образом, учитывая следующий элемент, если это максимум к этой точке, добавьте его к «максимальной содержащей части». Если нет, то нет другого выбора, кроме как добавить его к другой части, если это возможно (например, если он больше, чем самый большой элемент этой части, но это не текущий максимум). Если эта процедура завершилась неудачно, то раздел не возможен, а если он завершится успешно, мы продемонстрировали раздел.
Самая важная часть состоит в том, чтобы понять логику этого разделения.
Заранее спасибо.
Давайте использовать данный алгоритм на {3,1,5,2,4}.
Первое число — 3. Наш раздел — {3}, {}.
Далее идет 1. Мы не можем добавить это к {3}, поэтому мы добавляем его к другому: {3}, {1}.
Далее идет 5. Мы добавим его в {3}, чтобы сохранить {1} для меньших чисел: {3,5}, {1}.
Далее идет 2. мы должны добавить его к {1}: {3,5}, {1,2}. (Теперь мы понимаем, почему не стоит добавлять 5 к {1}.)
Далее идет 4: опять у нас нет выбора: {3,5}, {1,2,4}.
Других решений пока нет …