IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Волнистая последовательность
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Назовенм последовательность волнистой если для всех кроме первого элемента выполняется: для всех элементов кроме первого и последнего, что либо этот член последовательности больше всех своих соседей, либо меньше.
Например : 12121212121-волнистая
а 123321 - нет
дана последовательность и надо из неё выделить самую большую волнистую подпоследовательность .
Последовательность храниться в массиве помогите хоть алгоритмом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Идем слева направо по последовательности, и помним, сколько (максимум) последних прочитанных символов удовлетворяют условию "волнистости". А именно:

1. Один символ всегда волнистый.
2. Два символа, только если они не равны, волнистые.
3. n+1 символов - волнистые, если первые n из них - волнистые, и для n-го символа выполняется условие "больше всех своих соседей, либо меньше"


Получается алгоритм:

1. Прочитать следующий символ. Считать его первым в искомой подстроке (ПИП)
2. Прочитать следующий символ. Если он равен ПИП, считать его ПИПом и перейти к шагу 2
3. Иначе считать его вторым в искомой подстроке (ВИП). Найден ответ длины 2.
4. Прочитать следующий символ. Если он равен предыдущему прочитанному, считать его ПИПом и перейти к шагу 2
5. Проверить для предыдущего символа (стоящего перед только что прочитанным) условие волнистости. Если оно выполняется, перейти к шагу 4.
6. Иначе запомнить найденный ответ (не включая последний прочитанный символ). Последних два прочитанных символа считать ПИПом и ВИПом соответственно, и перейти к шагу 4.

При этом "запомнить найденный ответ" означает не вырезать саму подстроку (подмассив), а просто запомнить индексы первого (ПИП) и последнего элементов в подпоследовательности.

Алгоритм получается линейный.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
xprogrammer   Волнистая последовательность   3.11.2006 14:38
Michael_Rybak   Идем слева направо по последовательности, и помним…   3.11.2006 15:06
xprogrammer   нет, вы неправильно мепня поняяли. Подпоследовател…   4.11.2006 3:25
Michael_Rybak   Подпоследовательностью последовательности (Xn) я …   4.11.2006 4:42
volvo   xprogrammer, а теперь перечитай свой первый пост..…   4.11.2006 3:42
xprogrammer   Волнистые: 1 2 1 2 1 2 1 3 2 6 1 8 4 …   4.11.2006 4:04
Reflex   Ты помоему не прав биекцию ты непосроишь в последо…   4.11.2006 15:45
lapp   Ты помоему не прав биекцию ты непосроишь в послед…   4.11.2006 16:03
Reflex   тогда я не понимаю почему это алгоритм будет работ…   4.11.2006 17:14
Reflex   не понела как он будет работать на 1-2-1-2-1-2-1 п…   4.11.2006 19:04
Гость   Если честно, не могу врубиться в решение Рыбака - …   4.11.2006 19:37
Michael_Rybak   Если я не прав - скажите, где :) Прав :) *насви…   4.11.2006 21:21
Reflex   program Problem; {$APPTYPE CONSOLE} uses …   4.11.2006 19:44
lapp   Reflex, я праввильно понял, что ты выдаешь только …   4.11.2006 20:02
klem4   Что - то вы тут разшлись, может я что не так понял…   5.11.2006 13:57
lapp   может я что не так понял конечно, вот таккой вари…   5.11.2006 16:24
klem4   Именно, я упустил видимо это ? ? Если да, то и…   5.11.2006 16:26


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 8.05.2024 11:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name