\documentclass[spec, och, labwork]{SCWorks} \usepackage{preamble} \begin{document} \include{titlepage.tex} \section*{Описание работы алгоритма} В качестве рекурсивного алгоритма будет рассмотрена задача о ходе коня "--- задача о нахождении маршрута шахматного коня, проходящего через все поля доски по одному разу. Алгоритм нахождения данного пути можно описать следующим образом: \begin{enumerate} \item Пометить текущую клетку; \item Если все клетки помечены, то закончить алгоритм, иначе перейти к шагу 3; \item Перейти в одну из возможных не помеченных клеток. Если невозможно совершить ни один ход, то снять метку с текущей клетки, вернуться в предыдущую клетку и перейти к шагу 1. \end{enumerate} \subsection*{Оценка сложности} Так как из заданной клетки конь может перейти в 2-8 клеток, из которой он в свою очередь так же может перейти в 2-7 других клеток и т.д. Такой путь состоит из $n^2$ клеток. При этом доска также состоит из $n^2$ клеток. Таким образом, сложность данного алгоритма составляет $O(n^{2n^2})$ \subsection*{Реализация на языке C++} \inputminted[fontsize=\small, breaklines=true, style=bw, linenos]{c}{../../knights-tour.cpp} \end{document}