|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.03.2014, 00:59 | #1 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 44
|
Паскаль, задача на подстроки: по заданному числу поиск контактов в записной книжке
Добрый вечер, помогите, пожалуйста, с задачей! Послезавтра олимпиада, а у меня не получаются такого рода задачи :С
Если не сложно, нужен код, чтобы разобраться с тем, как это все проще реализовывать на Паскале. Очень на это надеюсь! Своя программа, конечно, есть, но она никак не поможет, т.к. она не дописана: у меня получилось слишком много циклов в цикле и все...дальше совсем все стало туманно. Заранее спасибо за любую помощь |
14.03.2014, 01:11 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
При первом взгляде показалось, что придется создавать все комбинации и искать их во всех контактах, но потом появилась одна идейка:
Считываете все контакты Считываете строку-запрос Преобразовываете каждый контакт в набор соответствующих цифр (можно подумать, как это делать наиболее эффективно; например, сделать строку с нужными цифрами и брать i-ю цифру из нее s[ord(b[i]) - 60], где s - строка с цифрами, b - строка с контактом) Затем простым pos('запрос', 'контакт в виде цифр') > 0 определяем, нужно ли вывести соответствующий контакт или нет PS Надеюсь не ошибся в алгоритме (что вполне вероятно в ночное время).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
14.03.2014, 11:23 | #3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Но ваш вариант намного проще и эффективнее! Браво! |
|
14.03.2014, 13:03 | #4 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Как вариант :
Загоняем всё в список(для простоты реализации это будет одномерный массив с 2-мя полями : строка и указатель) Берем первую цифирку, и бежим по списку, попутно удаляя указатели на элементы, которые нам не нужны (if a[j].s[i] не уд усл then).. и всё.. теперь о быстродействии.. О(n*100).. Красота.. Тогда можно сделать константу побольше, но уменьшить время написания кода.. загнать всё в массив, где опять же 2 поля : строка и булевская переменная, которая говорит, нужно ли смотреть\выводить данную строку.. |
18.03.2014, 13:36 | #5 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 44
|
Спасибо всем Большое
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача на Паскаль: по заданному множеству N точек построить N-угольник | Dragon65 | Паскаль, Turbo Pascal, PascalABC.NET | 41 | 05.02.2014 20:29 |
Вычислить произведение чисел, неравных заданному числу Z | Hug | Помощь студентам | 4 | 12.11.2013 23:27 |
Определить, какое количество цифр числа надо исправить, чтобы исправленное совпадало с обращенным к заданному числу M | Krusad | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 08.10.2012 12:54 |
Определить ближайший элемент массива к заданному числу | wowan | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 28.05.2011 23:21 |
определить день недели по заданному числу (считать в месяце 30 дней и первый день месяца понедельник | dan1991 | Помощь студентам | 1 | 01.03.2009 20:59 |