1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| xprogrammer |
3.11.2006 10:38
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: 0 |
Назовенм последовательность волнистой если для всех кроме первого элемента выполняется: для всех элементов кроме первого и последнего, что либо этот член последовательности больше всех своих соседей, либо меньше.
Например : 12121212121-волнистая а 123321 - нет дана последовательность и надо из неё выделить самую большую волнистую подпоследовательность . Последовательность храниться в массиве помогите хоть алгоритмом. |
![]() ![]() |
| xprogrammer |
3.11.2006 23:25
Сообщение
#2
|
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: 0 |
нет, вы неправильно мепня поняяли. Подпоследовательностью последовательности (Xn) я имею ввиду любой упорядоченный набор элементов последовательности (yn) где если Yi , yj ( элементы последовательности) и I>j то номер элемента Yi в последовательности Xn будет больше номера Yj в последовательности Xn
Например: Xn : 1 2 3 4 5 6 7 8 9 0 Yn : 1 3 5 7 9 |
| Michael_Rybak |
4.11.2006 0:42
Сообщение
#3
|
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Подпоследовательностью последовательности (Xn) я имею ввиду любой упорядоченный набор элементов последовательности (yn) где если Yi , yj ( элементы последовательности) и I>j то номер элемента Yi в последовательности Xn будет больше номера Yj в последовательности Xn О, вот это уже поинтереснее Считаем, что в массиве все числа - от 0 до n-1. Если это не так, то понятно, что можно построить биекцию. Введем понятие верхних и нижних волнистых подпоследовательностей. Верхней называем такую, у которой последнее число *больше* предпоследнего, нижней - такую, у которой последнее число *меньше* предпоследнего. Подпоследовательности длины 0 и 1 являются и верхними, и нижними одновременно. Заведем два массива: А[0 .. n-1] и В[0 .. n-1]. Изначально A[i] = B[i] = 0 для всех i. Идем слева направо по входному массиву (напомню, что все числа в нем - от 0 до n-1). После прочтения каждого числа состояние массивов А и В должно быть таким: A[i] - длина максимальной волнистой верхней подпоследовательности в прочитанном куске, оканчивающейся числом i, B[i] - длина максимальной волнистой нижней подпоследовательности в прочитанном куске, оканчивающейся числом i. В начале все A[i] = B[i] = 0, потому что еще ничего не прочитано. Теперь, пусть мы прочли число x. В результате могут поменяться только значения A[x] и B[x]. Они станут равны: A[x] = max(B[0], B[1], B[2], .., B[x-1]) + 1 B[x] = max(A[x+1], A[x+2], A[x+3], .. , A[n - 1]) + 1 Действительно, чтобы с помощью х получить наилучшую верхнюю подпоследовательность, нужно приписать х к наилучшей из найденных нижних подпоследовательностей, оканчивающихся числами, меньшими х. И наоборот. Пройдя слева направо по всему входному массиву, мы заполним постепенно массивы А и В. Теперь наибольшему из всех чисел в А и В соответствует самая длинная волнистая подпоследовательность. Как ее теперь построить - додумаешь сам. Вот. Это решение очень легко пишется, и работает за квадрат. Если тебе надо за n log n, разберись с этим, и приходи |
xprogrammer Волнистая последовательность 3.11.2006 10:38
Michael_Rybak Идем слева направо по последовательности, и помним... 3.11.2006 11:06
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![]() ![]() |
|
Текстовая версия | 10.12.2025 20:53 |