Статья Автор: Лебедев Дмитрий

TUZ_3-11 Поиск и обращение восходящих подмассивов

TUZ_3-11 Поиск и обращение восходящих подмассивов

TUZ_3-11 Поиск и обращение восходящих подмассивов
3.11 Поиск и обращение восходящих подмассивов
В этой задаче дается массив положительных целых чисел и требуется найти обратные возрастающие подмассивы.
Каждый подсписок должен содержать только строго увеличивающиеся элементы.
Например, для входного массива [5, 7, 220, 33, 2, 6, 8, 1, 45]
  • на первом этапе образуются подмассивы: [5, 7, 220], [33], [2, 6, 8], [1, 45],
  • а на следующем этапе содержимое подмассивов переворачивается в обратном порядке: [220, 7, 5], [33], [8, 6, 2], [45, 1].
  • Затем перевернутые подмассивы объединяются в исходном порядке.
    Следовательно, [5, 7, 220, 33, 2, 6, 8, 1, 45] → [220, 7, 5, 33, 8, 6, 2, 45, 1].
В табл. 3.11 показаны ожидаемые результаты для некоторых входных данных.
Таблица 3.11. Некоторые ожидаемые результаты для задачи обращения восходящих подмассивов
Arrays Ожидаемый результат 
[6, 3, 2] [6, 3, 2]
[5, 7, 220, 33, 2, 6, 8, 1, 45] [220, 7, 5, 33, 8, 6, 2, 45, 1]
[1, 5, 7, 9, 90, 13, 11, 23] [90, 9, 7, 5, 1, 13, 23, 11]
[44, 33, 57, 36, 38, 900] [44, 57, 33, 900, 38, 36]

Алгоритм
В алгоритме используется метод двух указателей, где указатель i указывает на начало подсписка,
а указатель j используется для поиска конца восходящего подсписка.
Отыскав восходящий подмассив, программа «вырезает» подмассив, располагает элементы подсписка в обратном порядке
и добавляет его в итоговый список. Затем она передвигает указатель i в начало следующего подмассива,
и процесс повторяется до тех пор, пока не будет достигнут конец списка.


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать