Разбиение массива на два массива по специальному правилу

0

Я работал над упражнением и наткнулся на проблему.

Учитывая массив целых чисел, определите, можно ли его разделить на два массива, каждый из которых находится в порядке возрастания. Например, 3,1,5,2,4 могут, но 4,8,1,5,3 не могут.

Проблема здесь. Я не мог понять, почему 1-й массив может, но второй не может.
Есть подсказка:
Если мы успешно разделили начальный сегмент массива, одна из частей должна содержать максимальный элемент, увиденный до сих пор. В наших интересах, очевидно, что самый большой элемент другой части должен быть как можно меньшим. Итак, учитывая следующий элемент, если он максимум до этого момента добавляет его в "максимально содержащую часть". Если нет, нет другого выбора, кроме как добавить его в другую часть, если это возможно (например: если он больше самого большого элемента этой части, но это не текущий максимум). Если эта процедура завершится неудачей, то раздел не будет возможен, и если он преуспеет, мы продемонстрируем раздел.

Важнейшая часть состоит в том, чтобы понять логику этого разбиения.
Заранее спасибо.

  • 0
    Почему это не может? Ну что ж, попробуйте разделить 4,8,1,5,3 на две возрастающие последовательности. Этот «намек» в основном всего лишь алгоритм.
  • 0
    Обратите внимание, что любая последовательность может быть разбита на n возрастающих последовательностей для достаточно большого n ... единственный вопрос заключается в том, возможно ли это для некоторой последовательности и некоторого n .
Показать ещё 7 комментариев
Теги:
arrays
algorithm
partitioning

1 ответ

4
Лучший ответ

Пусть данный алгоритм используется на {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}.

  • 0
    Теперь все понятно. Спасибо @ бета

Ещё вопросы

Сообщество Overcoder
Наверх
Меню