Я работал над упражнением и наткнулся на проблему.
Учитывая массив целых чисел, определите, можно ли его разделить на два массива, каждый из которых находится в порядке возрастания. Например, 3,1,5,2,4 могут, но 4,8,1,5,3 не могут.
Проблема здесь. Я не мог понять, почему 1-й массив может, но второй не может.
Есть подсказка:
Если мы успешно разделили начальный сегмент массива, одна из частей должна содержать максимальный элемент, увиденный до сих пор. В наших интересах, очевидно, что самый большой элемент другой части должен быть как можно меньшим. Итак, учитывая следующий элемент, если он максимум до этого момента добавляет его в "максимально содержащую часть". Если нет, нет другого выбора, кроме как добавить его в другую часть, если это возможно (например: если он больше самого большого элемента этой части, но это не текущий максимум). Если эта процедура завершится неудачей, то раздел не будет возможен, и если он преуспеет, мы продемонстрируем раздел.
Важнейшая часть состоит в том, чтобы понять логику этого разбиения.
Заранее спасибо.
Пусть данный алгоритм используется на {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}.
n
возрастающих последовательностей для достаточно большогоn
... единственный вопрос заключается в том, возможно ли это для некоторой последовательности и некоторогоn
.