Re: Задачка о ферзях
От: dony  
Дата: 16.12.04 14:31
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>На доске NxN расставить N ферзей так, чтобы они не били друг друга.

Т>N- большое, времени мало.

Довольно простенький алгоритм. Сперва алгоритм для четных N.
Начальная позиция (1, 0). с шагом по абциссе 2, а по ординате 1 выставляешь ферзей. Дойдя до конца доски по абциссе остается еще половина по ордиате. Осуществляется переход в точку (0, N/2) и с тем же шагом ставится остальные ферзи. Это все можно сделать и в цикле с интервалом от 0 до N/2

Далее алгоритм, если N — нечетно
Пусть доска — это матрица. Делается минор, без самых крайних ряда и столбца. На пересечении этих строки и столбца ставиться ферзь. В миноре по алгоритму, где N — четно расставляются ферзи.

P.S. нумерации строк и столбцов начинал с 0
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.