|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.04.2013, 21:47 | #1 |
Пользователь
Регистрация: 06.11.2011
Сообщений: 44
|
Ускорить работу программы
Код:
|
15.04.2013, 22:39 | #2 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
15.04.2013, 23:02 | #3 |
Пользователь
Регистрация: 14.04.2013
Сообщений: 62
|
Код:
|
15.04.2013, 23:09 | #4 |
Пользователь
Регистрация: 06.11.2011
Сообщений: 44
|
Спасибо большое! своим остроумием вы мне очень помогли
|
15.04.2013, 23:11 | #5 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Было бы здорово, если бы Вы предоставили алгебраическое описание функции p.
Код:
Rififi, добрый Вы. Хотя функция неприятная, факт. Если я не напутал в расчётах, то для чётного s она равна... TeX-разметки нет, поэтому вот так: (C(s/2,0)*П1 <= k <= r(2k-1) + C(s/2 + 1, 1) * 2r * П1 <= k <= r-1(2k-1) + ... + C(s/2 + r-1, r-1) * 2r*(2r-2)*(2r-4)*...*4) / Пs/2 < k <= r + s/2(2k-1) (C(n,k) - биноминальный коэффициент) Растёт быстро, считается фигово. |
15.04.2013, 23:14 | #6 |
Пользователь
Регистрация: 06.11.2011
Сообщений: 44
|
Спасибо, конечно, но этого не достаточно : Максимальное время выполнения: 1.014 секунды из 1 секунда
|
15.04.2013, 23:19 | #7 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Нужна мемоизация. Обратите внимание, что при вызове p(5,4) значение p(2,1) сейчас будет независимо считаться 20 раз. Если вместо этого завести динамический массив, изначально заполненный, скажем, -1 и сначала пытаться искать значение в нём, всё станет чуть менее мрачно.
|
16.04.2013, 00:00 | #8 |
Пользователь
Регистрация: 06.11.2011
Сообщений: 44
|
Что-то типа этого? Только я понимаю, что написала бред(не работает), но все же....помогите исправить
Код:
|
16.04.2013, 00:31 | #9 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Прочитайте описание функции memset(). Нужен массив double (причём вариант с фиксированным размером не вполне удачен), и инициализировать его проще в цикле (заодно загнав туда условия выхода из рекурсии):
Код:
Соответственно: Код:
Последний раз редактировалось Abstraction; 16.04.2013 в 00:35. |
16.04.2013, 01:01 | #10 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
а при каких значениях вы замеряете время исполнения?
У меня показатель: 0.001354 секунды на таком коде: Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ускорить работу БД | SERG1980 | БД в Delphi | 9 | 09.11.2010 23:30 |
Ускорить работу с БД | Poltev86 | БД в Delphi | 2 | 25.05.2010 09:46 |
ускорить работу макроса | borik120 | Microsoft Office Excel | 12 | 19.01.2010 17:25 |
Как ускорить работу программы | SibBear | Общие вопросы Delphi | 7 | 27.03.2009 14:40 |
помогите ускорить работу программы... | Pashtet | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 25.11.2008 22:12 |