![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 20.12.2009
Сообщений: 5
|
![]()
С клавиатуры вводится последовательность символов. Исключить символы, повторяющиеся бо-лее 2-х раз. Исключить из последовательности символ с заданным номером.для pascal
|
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 17.12.2009
Сообщений: 74
|
![]()
Только 1 вопрос, надо динамически расширяемым массивом сделать?
Если нет то вот. заводишь массив от 1 до 255 где и-тому элементу будет соответствовать и-ый номер символа. '0' = M[48](ну надеюсь понял). И делаешь так. for i := 1 to length(s) do inc(M[ord(s[i])]); Теперь, если гдето в массиве M[i] > 2 то такие элементы нужно удалить из строки. Прога при тупой реализиции работает за квадрат, то есть если длин строки больше 10000, то делай так. ЕСЛИ ДЛИНА СТРОКИ МЕНЬШЕ 10000, ТО НЕ ЧИТАЙ ЧТО НАПИСАНО ДАЛЬШЕ - НАВЕРНЯКА НЕ ПОЙМЁШЬ. Динмически расширяя новый массив запоминай на каком месте стоит данный символ. Тогда обращение будет за O(1); и вместо удаления заменяй элемент на такой какого точно не будет в строке, а при выводе не выводи всет такие элементы. Такое решение будет линейным и покатит на длину строки примерно до 10000000. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамические структуры данных | Gigatrest | Помощь студентам | 3 | 21.06.2009 14:32 |
Динамические структуры данных | Yashanov | Помощь студентам | 1 | 29.04.2009 10:11 |
Динамические структуры данных - списки | FoOtBaLiIsT | Общие вопросы C/C++ | 0 | 18.03.2009 22:10 |
сохранение структуры (динамические списки очередей) в файле | AlenaZ | Помощь студентам | 2 | 09.06.2008 20:14 |