Реализовать рекурсивный алгоритм обхода шахматной доски конём - 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--;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы