Реализовать рекурсивный алгоритм обхода шахматной доски конём - C#
Формулировка задачи:
Помогите пожалуйста с такой задачей:
Дана свободная от фигур шахматная доска размером 6*6 клеток.Требуется реализовать рекурсивный алгоритм обхода шахматной доски конём. На каждой клетке конь может побывать только один раз. Вывести координаты каждой пройденной клетки.
Вначале я пыталась найти какие-нибудь закономерности, но потом задачу можно решить только через перебор с возвратом. Как это сделать я не знаю.
Решение задачи: «Реализовать рекурсивный алгоритм обхода шахматной доски конём»
textual
Листинг программы
using System; namespace Chess { class Program { static int[,] Ar = new int[6, 6]; static int X, Y, n; static void Main(string[] args) { int[,] Ar = new int[6, 6]; Console.Write("Введите X (1-6): "); X = Int32.Parse(Console.ReadLine()) - 1; Console.Write("Введите Y (1-6): "); Y = Int32.Parse(Console.ReadLine()) - 1; Move(X, Y); Console.ReadLine(); } static void Move(int X, int Y) { int iX = 0, iY = 0, nn = ++n; bool WasStep = false; Ar[X, Y] = 1; for (int i = 0; i < 8; i++) { switch (i) { case 0: iX = X + 1; iY = Y - 2; break; case 1: iX = X + 2; iY = Y + 1; break; case 2: iX = X - 1; iY = Y + 2; break; case 3: iX = X - 2; iY = Y - 1; break; case 4: iX = X - 1; iY = Y - 2; break; case 5: iX = X + 2; iY = Y - 1; break; case 6: iX = X + 1; iY = Y + 2; break; case 7: iX = X - 2; iY = Y + 1; break; } if (iX > -1 && iX < 6 && iY > -1 && iY < 6 && Ar[iX, iY] == 0) { WasStep = true; Console.WriteLine("{0,4}: {1}-{2} -> {3}-{4}", "(" + nn + ")", X + 1, Y + 1, iX + 1, iY + 1); Move(iX, iY); } } if (!WasStep) n--; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д