|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.11.2009, 18:53 | #1 | |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Как "ускорить" задачу на перебор
Цитата:
Код:
|
|
05.11.2009, 19:04 | #2 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
Довольно детский вариант задачи, дали бы букв 9-10 - надо бы было оптимально перебирать, с отсечением и подстановкой, а так..
Какой лимит времени? 1 секунда? Тогда тупой "правильный" лобовик должен катить. Из 10 цифр можно згенерить всего 151200 вариант слова "МАРТИН", из которых 15120 начинаються на 0. Остаеться всего 136080 чисел. Генерим все числа, проверяем, совпадают ли в результате ключевые буквы (А и Р) и все дела. |
05.11.2009, 19:27 | #3 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Как 151200 вариантов?! Каждая буква - 10 вариантов, кроме первой =>
9 * 10 * 10 * 10 * 10 * 10 = 900 000 Дак и я у себя так и сделал - генерю число и подставляю, если МАРТИН * N = ГАРДНЕР, то все, иначе следующее число. Но я где-то накосил, в результате оно минут 5 работает! Вот только где? |
05.11.2009, 20:03 | #4 | |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
Цитата:
Вот, в секунду укладываеться (edit - на моем не сильно продвинутом металобрухте показывает 0.54с ), вроде бы рабочий (то, что выводит для части тестов, проверял вручную, правильно, но не могу гарантировать, что он находит все решения или что дает верные ответы на все тесты, так как проверил только штук 15), сейчас еще тестить буду. Использовал полный перебор. Если есть напряги с памятью, то лучше выбросить 2мерные массивы и сделать объявление внутри самого цикла. Но мой вариант позволяет время секономить Код:
edit Дописал "проверку а глупость". Ведь на входе может быть и миллион, тогда надо переделывать под инт64, а то, что ответа не будет, и так понятно. Последний раз редактировалось LeBron; 06.11.2009 в 11:38. |
|
06.11.2009, 09:33 | #5 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Хм, я переделывал пока, LeBron уже сделал Только это, вы всегда так форматируете? Просто сложно читать...
З.Ы.: Нифига, ваша программа действительно меньше секунды работает! А моя новая 10 секунд Сейчас попытаюсь понять секрет З.Ы.Ы: А как это объяснить: под Delphi моя программа 3 сек. ищет, а под Паскалем 10 сек.? В чем тут вообще может быть разница? Последний раз редактировалось k1r1ch; 06.11.2009 в 09:47. |
06.11.2009, 10:33 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
Я имею ввду NTVDM
I'm learning to live...
|
|
06.11.2009, 10:40 | #7 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Скомпилированный под Делфи файл работает быстрее скомпилированного из под Паскаля и ФриПаскаля. Значит надо пользоваться Делфи
|
06.11.2009, 11:32 | #8 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
Нет, всегда я вообще не форматирую и срезаю по краю екрана. Я уже привык, а удобность в том, что меньше над бегать глазами вверх-вниз и мотать страницу. А сдесь немного "переделал" для "удобства" других. Большинство программ умещаються в 1 екран Сейчас еще в своей программе кое-что допишу.
|
07.11.2009, 11:34 | #9 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Я все-таки решил вернуться к этой задаче и сделать по-другому (чтоб не копировать тупо ). Вот как я сделал (у меня около секунды выполняется):
Код:
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как ускорить расчеты формул??? | Иванов_ДМ | Microsoft Office Excel | 7 | 02.09.2009 09:53 |
Как ускорить программу ? | juan666777 | Общие вопросы Delphi | 2 | 02.05.2009 19:48 |
Как ускорить работу программы | SibBear | Общие вопросы Delphi | 7 | 27.03.2009 14:40 |
Как ускорить работу с сетевой БД | Ramires | БД в Delphi | 3 | 21.08.2008 12:16 |
Как ускорить выполнение макросов | tat-besidovska | Microsoft Office Excel | 1 | 22.01.2008 12:12 |