Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ последовательность символов

Автор: Вагон 25.10.2006 20:12

Дана строка длиной N символов. Справа строка ограничена пробелом.
Проверить наличие двух одинаковых слов.
Как я понимаю, между словами пробелов нет.
не пойму, как решать

Автор: Malice 25.10.2006 20:20

Цитата(Вагон @ 25.10.2006 17:12) *

Как я понимаю, между словами пробелов нет.

А что есть? Слова как друг от друга отделять, по словарю ? smile.gif Если известна N, то от чего пробелом ограничена строка?
Скорее всего слова через пробел и в этом случае поиск по сайту даст тебе ответ.

Автор: Вагон 25.10.2006 21:29

Цитата(Malice @ 25.10.2006 16:20) *

А что есть? Слова как друг от друга отделять, по словарю ? smile.gif Если известна N, то от чего пробелом ограничена строка?
Скорее всего слова через пробел и в этом случае поиск по сайту даст тебе ответ.

Почему бы и нет? А если под словом имеется ввиду последовательность одинакових символов

Автор: Michael_Rybak 26.10.2006 0:11

Если "последовательность одинакових символов", то просто проверить, что все буквы - разные. Любые две одинаковые буквы удовлетворяют такому определению. А вот если два наибольших одинаковых слова - это куда сложнее. И рассказывать долго. А если словарь дан - то вообще третья задача.

Автор: Вагон 26.10.2006 12:49

Цитата(Michael_Rybak @ 25.10.2006 20:11) *

Если "последовательность одинакових символов", то просто проверить, что все буквы - разные. Любые две одинаковые буквы удовлетворяют такому определению. А вот если два наибольших одинаковых слова - это куда сложнее. И рассказывать долго. А если словарь дан - то вообще третья задача.

Например-"абракадабра" имеется два одинаковых слова "ра"

Автор: lapp 26.10.2006 13:08

Цитата(Вагон @ 26.10.2006 9:49) *

Например-"абракадабра" имеется два одинаковых слова "ра"

Вагон, читай внимательнее. При точной реализации твоих слов
Цитата
А если под словом имеется ввиду последовательность одинакових символов

любая повторяющаяся буква даст тебе положительный результат (последовательность длины 1).
Michael_Rybak предложил дополнить твою формулировку словами "максимальной длины". Если так, то в слове "абракадабра" таковой является "абра", а не "ра".
Но тратить время на задачу с неопределенными условиями не очень хочется. Тебя не слишком затруднит уточнить формулировку?

Автор: Malice 26.10.2006 13:18

Цитата(Вагон @ 26.10.2006 9:49) *

Например-"абракадабра" имеется два одинаковых слова "ра"

И не только, их там полно.
А вообще если так вопрос поставлен, то надо делать перебор, что-то типа этого:
Код
...
for x:=2 to n div 2 do
   for i:=1 to n div 2 do
     for j:=i+x to n-x+1 do
if copy(s,i,x)=copy(s,j,x) then  ...

Автор: Michael_Rybak 26.10.2006 16:52

Не-а. Перебор делать не надо, потому что существует множество замечательных быстрых алгоритмов для строк. Например, поиск подстроки длины X внутри строки длины Y можно осуществить за O(X+Y), а не за O(XY), как это делает, например, функция Pos в Паскале. Вообще, практически все что угодно со строками можно сделать за n log n. Но сделать это сложнее всего, когда нет постановки задачи smile.gif

Автор: Вагон 26.10.2006 17:04

выяснил, что слова разделены пробелами. Но как организовать поиск одинаковых слов, ума не приложу. Поиск ничего не дал. Поможите!!! mega_chok.gif

Автор: мисс_граффити 26.10.2006 17:57

самый простой вариант:
считываешь первое слово. удаляешь его. если pos вернет не ноль - значит, это слово есть еще.
кстати, а что делать со словами, которые встречаются три, четыре, пять, двадцать раз?

Автор: Вагон 27.10.2006 19:46

Неужели никто не может проверить строку из 90 символов, ограниченную справа пробелом
на наличие двух одинаковых слов??? blink.gif

Автор: Michael_Rybak 27.10.2006 20:32

Ты написал:

Цитата
не пойму, как решать


Тебе ответили (когда, наконец, добились формулировки):

Цитата
считываешь первое слово. удаляешь его. если pos вернет не ноль - значит, это слово есть еще.


Ты, игнорируя это (ни "спасибо", ни "не понял", ни "и как это сделать") пишешь:

Цитата
Неужели никто не может


Что из этого следует? Ничего хорошего.