Крах надежд... // 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)