1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| *оля* |
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: 1 |
если даны два списка чисел и нужно найти наибольшую одинаковую последовательность чисел, например, если дано:
1 2 3 4 5 6 1 2 6 2 3 4 то должен вывести 234 подскажите пожалуйста, каким алгоритмом тут лучше воспользоваться? |
![]() ![]() |
| volvo |
Сообщение
#2
|
|
Гость |
*оля*, тут возможны 2 варианта...
Первый (я буду удалять подпоследовательность из ПЕРВОГО списка, а не из второго): { Чуть-чуть изменяем цикл поиска (нам понадобится еще одна переменная)}
Это все, можно теперь печатать список, найденая последовательность из него уже удалена... Это был первый способ. Второй похож, но немного отличается - не удалять элементы один за одним в цикле, а просто пропускать их (переходить к следующему). Как только дошли до конца нашей последовательности, "обрубаем" список NIL-ом и чуть-чуть подправляем указатели так, чтобы "вырезанный" кусок был отдельно, а то, что было ПЕРЕД и ПОСЛЕ него - склеиваем в одно. Это не так сложно, как кажется, достаточно нарисовать на бумажке список и посмотреть, куда какие связи надо установить... Если у тебя уже есть подпрограмма, удаляющая список, то я бы все-таки попробовал реализовать именно второй метод на твоем месте, потому что удалять тот, "вырезанный" кусок можно с помощью готовой подпрограммы (это ведь самостоятельный список, у нас есть адрес его начала, он заканчивается пустым указателем, как положено), а это всегда лучше, не будет дублирования кода... Вот у меня сейчас подпоследовательность удаляется в одном месте, а сами списки я буду удалять в другом, это приведет к копированию куска кода. Так что все-таки попробуй реализовать второй вариант, если что не получится - говори, подскажем |
*оля* алгоритмы поиска 16.05.2010 22:37
*оля* попробовала написать программу для 2х массивов, к… 17.05.2010 0:48
volvo Это задача о Наибольшей Общей Подпоследовательност… 17.05.2010 1:32
TarasBer > не подскажете где ошибка?
Ну, например, что… 17.05.2010 17:49
*оля* в другой книге написано в одной строчке по-другому… 19.05.2010 1:34
TarasBer > в другой книге написано в одной строчке по-др… 19.05.2010 13:34
*оля* все, в своем не совсем удачном алгоритме нашла еще… 19.05.2010 16:12
TarasBer > Поэтому не могу найти алгоритм, который подой… 19.05.2010 16:44
*оля*
Пока что есть O(m*n*min(m,n)), короче кубическая… 20.05.2010 1:40
TarasBer А, в википедии же есть аналогичный алгоритм, но ка… 20.05.2010 13:52
TarasBer http://e-maxx.ru/algo/suffix_automata
Тут уже за … 20.05.2010 19:02
*оля* Спасибочки большое!!!)))
ну да, это у… 21.05.2010 23:57
Lapp это уже все сложно, но ради интереса попробую разо… 22.05.2010 8:21
*оля*
Можно дать несколько советов?
Буду только бла… 22.05.2010 15:35
*оля* что-то совсем у меня со списками ничего не получае… 23.05.2010 19:45
volvo Естественно. Вот при работе со списками как раз ну… 23.05.2010 20:09
*оля*
[code=pas] p := L.first;
while p <> nil … 24.05.2010 19:28
*оля* Спасибо большое!!! теперь все стало го… 23.05.2010 20:20
*оля* volvo, вы как всегда меня спасаете, спасибо большо… 24.05.2010 23:34
volvo А что будет делать этот цикл, расскажешь? Чего ты … 24.05.2010 23:55
*оля*
А что будет делать этот цикл, расскажешь? Чего ты… 25.05.2010 0:00
volvo Ну, так и будет, если не ошибаюсь:
sum := 0;
repe… 25.05.2010 0:30
*оля*
Ну, так и будет, если не ошибаюсь:
[code=pas]sum… 25.05.2010 21:57
volvo Полный код (в виде PAS-файла) присоедини, посмотри… 25.05.2010 22:09
*оля*
Полный код (в виде PAS-файла) присоедини, посмотр… 25.05.2010 23:07
volvo *оля*, а причина - тривиальна, и Андрей уже говори… 27.05.2010 16:36
*оля*
Добавляешь инициализацию и все работает.
да, д… 28.05.2010 23:07
Lapp Спасибо большое, я эту ошибку без вашей помощи не… 29.05.2010 5:32
*оля*
А между тем, на нее было указано еще в посте №13.… 1.06.2010 12:10![]() ![]() |
|
Текстовая версия | 23.12.2025 3:33 |