![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 44
|
![]()
Добрый вечер, помогите, пожалуйста, с задачей! Послезавтра олимпиада, а у меня не получаются такого рода задачи :С
Если не сложно, нужен код, чтобы разобраться с тем, как это все проще реализовывать на Паскале. Очень на это надеюсь! Своя программа, конечно, есть, но она никак не поможет, т.к. она не дописана: у меня получилось слишком много циклов в цикле и все...дальше совсем все стало туманно. Заранее спасибо за любую помощь ![]() |
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
![]()
При первом взгляде показалось, что придется создавать все комбинации и искать их во всех контактах, но потом появилась одна идейка:
Считываете все контакты Считываете строку-запрос Преобразовываете каждый контакт в набор соответствующих цифр (можно подумать, как это делать наиболее эффективно; например, сделать строку с нужными цифрами и брать i-ю цифру из нее s[ord(b[i]) - 60], где s - строка с цифрами, b - строка с контактом) Затем простым pos('запрос', 'контакт в виде цифр') > 0 определяем, нужно ли вывести соответствующий контакт или нет PS Надеюсь не ошибся в алгоритме (что вполне вероятно в ночное время).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Но ваш вариант намного проще и эффективнее! Браво! |
|
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]()
Как вариант :
Загоняем всё в список(для простоты реализации это будет одномерный массив с 2-мя полями : строка и указатель) Берем первую цифирку, и бежим по списку, попутно удаляя указатели на элементы, которые нам не нужны (if a[j].s[i] не уд усл then).. и всё.. теперь о быстродействии.. О(n*100).. Красота.. Тогда можно сделать константу побольше, но уменьшить время написания кода.. загнать всё в массив, где опять же 2 поля : строка и булевская переменная, которая говорит, нужно ли смотреть\выводить данную строку.. |
![]() |
![]() |
![]() |
#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 |