![]() |
Самая длинная подстрока
Помогите решить задачу.
Дана строка, состоящая из маленьких латинских букв. Ваша задача — найти длину ее самой длинной подстроки, встречающейся в строке хотя бы 2 раза. Вхождения подстрок могут перекрываться. Максимальная длина строки - 100 символов. |
В гугле море алгоритмов для нахождения подстроки, выбирайте любой. Думаю проверить кол-во вхождений и найти самую длинную не составит труда.
|
Цитата:
Код:
#include <stdio.h> |
Цитата:
|
Цитата:
Код:
#include <stdio.h> Что я делаю не так? |
Цитата:
https://www.google.com.ua/search?ie=UTF-8&hl=ru&q=%D0%A1%D0%B0%D0%BC%D0%B0%D1%8F%20%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%BE %D0%B4%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0%20%D0%A1%D0%B8#hl=ru&q=%D0%A1%D0%B0%D0%BC%D0%B0%D1%8F+%D0 %B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%B0%D1%8F+%D0%BF%D0%BE%D0%B4%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0+%D0%A 1%D0%B8 Поисковая система - это не решение всех проблем. |
Не так.
1. Получить перечень всех уникальных подстрок, входящих в исходную. Минимальная — один символ, максимальная — вся исходная строка. 2. Принять максимальную длину искомой подстроки за «0». 3. Перебирая все полученные в п.1 уникальные подстроки, проверять количество вхождений каждой из них в исходную строку. 3а) если количество вхождений окажется больше единицы (т.е., подстрока встречается в искомой хотя бы дважды) и её длина больше, нежели текущее значение максимальной длины из п.2 — принять её максимальную длину за искомую. Решив эти частичные задачи — составные части алгоритма — Вы получите правильный результат. Не забудьте, что, согласно условия: Цитата:
|
Цитата:
Код:
#include <stdio.h> |
MahovIV,
Цитата:
От того, что вы копируете чужой код и просите его для вас переписать толку не будет. Код следует переписать полностью. И для строк используйте string, а не char *. Чтобы с полной уверенностью сказать "Это я сам!" |
Время: 20:11. |
Время: 20:11.
© OSzone.net 2001-