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

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

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

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





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

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


Назовенм последовательность волнистой если для всех кроме первого элемента выполняется: для всех элементов кроме первого и последнего, что либо этот член последовательности больше всех своих соседей, либо меньше.
Например : 12121212121-волнистая
а 123321 - нет
дана последовательность и надо из неё выделить самую большую волнистую подпоследовательность .
Последовательность храниться в массиве помогите хоть алгоритмом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Michael_Rybak
сообщение 3.11.2006 11:06
Сообщение #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 10:38
Michael_Rybak   Идем слева направо по последовательности, и помним...   3.11.2006 11:06
xprogrammer   нет, вы неправильно мепня поняяли. Подпоследовател...   3.11.2006 23:25
Michael_Rybak   Подпоследовательностью последовательности (Xn) я ...   4.11.2006 0:42
volvo   xprogrammer, а теперь перечитай свой первый пост.....   3.11.2006 23:42
xprogrammer   Волнистые: 1 2 1 2 1 2 1 3 2 6 1 8 4 ...   4.11.2006 0:04
Reflex   Ты помоему не прав биекцию ты непосроишь в последо...   4.11.2006 11:45
lapp   Ты помоему не прав биекцию ты непосроишь в послед...   4.11.2006 12:03
Reflex   тогда я не понимаю почему это алгоритм будет работ...   4.11.2006 13:14
Reflex   не понела как он будет работать на 1-2-1-2-1-2-1 п...   4.11.2006 15:04
Гость   Если честно, не могу врубиться в решение Рыбака - ...   4.11.2006 15:37
Michael_Rybak   Если я не прав - скажите, где :) Прав :) *насви...   4.11.2006 17:21
Reflex   program Problem; {$APPTYPE CONSOLE} uses ...   4.11.2006 15:44
lapp   Reflex, я праввильно понял, что ты выдаешь только ...   4.11.2006 16:02
klem4   Что - то вы тут разшлись, может я что не так понял...   5.11.2006 9:57
lapp   может я что не так понял конечно, вот таккой вари...   5.11.2006 12:24
klem4   Именно, я упустил видимо это ? ? Если да, то и...   5.11.2006 12:26


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

 



- Текстовая версия 21.06.2025 10:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"