![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
c-chopper |
![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
:low:
Найти наиболее длинную последовательность символов, которая встречается в данном текстовом файле (без переводов строк, размер не более 10 килобайт) более одного раза. единственное, что приходит в голову(пока, по крайней мере) это тупой перебор комбинаций символов. но это неправильно. прошу помощи :molitva: -------------------- artificial intelligence
|
![]() ![]() |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Предлагаю такой способ.
Сначала выделяем вообще все подпоследовательности символов (последовательностть символов это более или 2 идущих подряд одинаковых симв), а затем имею все подпоследовательнотсти ищем ту, что нужно. а вот тебе пример как разбить на подпоследовательности: (процедура выделяет подпоследовательности) var s:string; то есть что бы сохранить последовательности надо вместо {*****}writeln(ss);{*****} описать процедуру сохранения где-то (все равно где - список, массив) слова ss... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Atos |
![]()
Сообщение
#3
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Надо уточнить : имеется в виду последовательность одинаковых символов или последовательность любых символов? В первом случае работает вариант, который дал Oleg_Z, а во втором ... тут всё гораздо интереснее... надо подумать B)
|
c-chopper |
![]()
Сообщение
#4
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата имеется в виду последовательность одинаковых символов или последовательность любых символов? любых, к сожалению как вам такой вариант: сохраняем текст в массив типа char. берём его первый элемент(первую букву текста) и идём по массиву до первого совпадения. далее проверяем совпадают ли символы, следующие за найденными. если да, то запоминаем где-нить полученную последовательность. далее проверяем следующую букву, если совпадает- добавляем её к последовательности, если нет- продолжаем поиск дальше по массиву. большой минус- придётся пробегать по массиву хз сколько раз.... а массив не маленький- 10кб -------------------- artificial intelligence
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
А как это отработает на таком массиве, например:
"abacbcbcbcddabacbcbcbcde" Выдаст подпоследовательность "ab"? Но ведь есть еще "abacbcbcbcd" !!! |
c-chopper |
![]()
Сообщение
#6
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
найдёт ab, проверит какая буква следует за b обоих случаях, обнаружит совпадение, добавит найденную букву в получаемую строку и продолжит так дальше до несовпадения. в итоге и должно получиться "abacbcbcbcd"
Сообщение отредактировано: c-chopper - 12.05.2005 16:55 -------------------- artificial intelligence
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Кстати, посмотри что я нашел: http://www.hardline.ru/1/11/1352/1750-5.html... Почитай, может натолкнет на идею?
|
Atos |
![]()
Сообщение
#8
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Цитата Кстати, посмотри что я нашел: Хорошая статья! Да, и ещё момент тут надо уточнить: последоватьльности могут пересекаться? То есть, считаем мы, что в строке abababa две последовтельности ababa , или нет? |
c-chopper |
![]()
Сообщение
#9
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
Atos
необходимо найти самую длинную. в данном случае очевидно только abababa volvo, спасибо. но 10кб текста это около 10000 символов. а BP такие здоровые массивы(10000х10000) не понимает ![]() ![]() -------------------- artificial intelligence
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
![]() |
Atos |
![]()
Сообщение
#11
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Цитата Atos необходимо найти самую длинную. в данном случае очевидно только abababa ![]() ![]() Так ведь в твоём задании "Найти наиболее длинную последовательность символов, которая встречается <... > более одного раза" Сама abababa, очевидно, только один раз. |
c-chopper |
![]()
Сообщение
#12
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
угу... я почему-то решил, что abababa часть строки %)
-------------------- artificial intelligence
|
c-chopper |
![]() ![]()
Сообщение
#13
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
:fire:
program individualnoe_n14; ета фигня работает в TMT Pascal Lite в районе 1 секунды, а в долбанном BP от 5 до 10 с хвостом. проверять препод будет в борланде. после чего повесит мя на мышином кабеле. SOS если не хотите писать прогу, то хоть популярно растолкуйте алгоритм из приведённой выше ссылки. а то для первого курса сложновато как-то... мы по строкам галопом пробежали... и всяких подстрок с суффиксами и расширениями строки не проходили.... я как только начинаю читать тут же "повисаю" от кол-ва незнакомых терминов... ![]() -------------------- artificial intelligence
|
Atos |
![]()
Сообщение
#14
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
На первый беглый взгляд:
1) Можно открыть файл как нетипизированный с длиной записи 1, и вместо read использовать BlockRead, копируя в массив не по одному символу, а сразу весь файл. Получится чуть быстрее, правда, скорее всего, ненамного. Но и на доли секунды оптимизировать не помешает. 2) Код ^char ![]() 3) Чего -то с самим алгоритмом не того... Надо разобраться, он вообще правильно работает? Счас скачаю, попробую у себя посмотреть. Мне самому эта задача интересна, скачал статью по той ссылке, чтобы дома на досуге разобраться, но чего-то не то с кодировкой оказалось ![]() З.Ы. Кстати, всё-таки сомнительно, чтобы от первокурсников требовалось применять деревья в задании. Наверное, уложиться в 1 секунду можно постараться как-нибудь по-другому... |
c-chopper |
![]()
Сообщение
#15
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Чего -то с самим алгоритмом не того... Надо разобраться, он вообще правильно работает? вроде да.... генерил файл, вставлял туда несколько повторяющихся слов разной длины- всё нашёл правильно(т.е. самое длинное)...Цитата тебе к какому дню надо сдать? 6 июня последний срок(лучше раньше, есессно). а у меня ещё, как говорится, конь не валялся... ну или малость повалялся =) и ушёлЦитата Кстати, всё-таки сомнительно, чтобы от первокурсников требовалось применять деревья в задании. Наверное, уложиться в 1 секунду можно постараться как-нибудь по-другому... требуется... и рекурсия соответственно тоже... в задании правда не оговорено ни время работы прогрраммы, ни средства, но.... это зачёт, поэтому, вероятно, надо бы использовать всё, что изучили... я сегодня это дело попробую выяснить... -------------------- artificial intelligence
|
c-chopper |
![]()
Сообщение
#16
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
использовать можно всё, что считаешь нужным.
Сообщение отредактировано: c-chopper - 17.05.2005 15:30 -------------------- artificial intelligence
|
volvo |
![]()
Сообщение
#17
|
Гость ![]() |
Цитата если не хотите писать прогу, то хоть популярно растолкуйте алгоритм из приведённой выше ссылки. Да пойми ты, что НЕ ДОЛЖЕН тебе никто ничего растолковывать. Иди в "Задачи на заказ", плати деньги, и потом будешь ТРЕБОВАТЬ. |
c-chopper |
![]()
Сообщение
#18
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
да ничего я не требую!
я лишь попросил. понятно, что не каждый захочет работать неизвестно для кого и безвозмездно(лень там.. или из принципа)... я и не претендую... просто попросил знатоков растолковать непонятное... а если не так выразился- что ж, извините пожалуйста.... я же никого не заставляю... -------------------- artificial intelligence
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 17:09 |