Крах надежд... // Re: Обход доски шахматным конем
- From
- Dmitriy K. ()
- To
- Andrew Ezhguroff
- Date
- 2002-07-25T02:25:28Z
- Area
- RU.ALGORITHMS
From: "Dmitriy K." <krylov@mail.primorye.ru>
Привет!
> RZ> Интересует алгоритм обхода доски шахматным конем. На одну клетку
> RZ> можно вставать только один раз...
>
> Если в лоб и рекурсивно, то, например, так:
>
> #include <stdio.h>
>
Наверное, будет не в тему, но я убил на сравнения часа три, так что может
кому-то будет интересно...
Когда я увидел прораммку, понятно стало, что принцип-то одинаковый, так что
и скорость будет разная. Решил проверить. Тут меня ждал первый облом.
Приведенная программка нашла первый вариант менее чем за три секунды. Я
начал разбираться.
Сначала грешил на компилятор. Перевел программку на C++. Результат - чуть
быстрее, чем на Pascal. Перевел все использованные ординальные типы в int.
Еще чуть (!) быстрее. Поменял способ обхода (порядок выполнения ходов),
развернул цикл - еще быстрее, но не на много...
И вот после того как я заменил объявления 'const int ...' на аналогичные
#define скорость возросла на несколько порядков!!! И это при включенной
оптимизации!
А я было подумал, что const работает как #define, только с проверкой типа.
После этого, поэкспериментировав с программкой и вспомнив Страуструпа всё
понял...
С уважением, Дмитрий.
P.S. Извините за сообщение не по тематике, просто уж сильно меня такая
разница удивила.
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
* Origin: Talk.Mail.Ru (2:5020/400)