Тема: Вивід результату - послідовність ходів.
Доброго дня!
Виникла потреба в реалізації даного завдання:
Задані координати двох клітинок шахової дошки (наприклад, А5 і С2). Знайти мінімальну кількість ходів, які потрібні шаховому коню, що перейти з першої клітинки на другу.
Результат виконання повинен мати наступний формат:
1. Мінімальна кількість ходів
2. Послідовність ходів
Маючи в арсеналі лише мінімальні теоретичні знання С# вирішив знайти на просторах інтернету реалізації подібних завдань, які конвертував в С#. В результаті отримав:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MissionImposible
{
class Point
{
public int x;
public int y;
public Point()
{
Console.WriteLine("Write x");
x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Write y");
y = Convert.ToInt32(Console.ReadLine());
}
public Point(int X, int Y)
{
x = X;
y = Y;
}
}
class Program
{
static bool correct(int x, int y, int n)
{
if (x < 0 || y < 0)
return false;
if (x >= n || y >= n)
return false;
return true;
}
static void Solve()
{
int[] moveX = { -2, -2, -1, -1, 1, 1, 2, 2 };
int[] moveY = { -1, 1, -2, 2, -2, 2, -1, 1 };
Console.WriteLine("Write N...");
var inputString = Console.ReadLine();
int n = Convert.ToInt32(inputString);
Point begin = new Point();
Point end = new Point();
int[,] mas = new int[n, n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
mas[i, j] = -1;
}
}
mas[begin.x, begin.y] = 0;
var q = new System.Collections.Generic.Queue<Point>();
q.Enqueue(begin);
while (q.Count != 0)
{
Point cur = q.Dequeue();
for (int i = 0; i < 8; i++)
{
int x = cur.x + moveX[i];
int y = cur.y + moveY[i];
if (correct(x, y, n) && mas[x, y] == -1)
{
mas[x, y] = mas[cur.x, cur.y] + 1;
if (end.x == x && end.y == y)
{
Console.WriteLine(mas[end.x, end.y]);
Console.ReadLine();
return;
}
q.Enqueue(new Point(x, y));
}
}
}
}
static void Main(string[] args)
{
Solve();
}
}
}
Програма працює і виводить вірний результат, але потрібно ще реалізувати вивід послідовності ходів, що у мене не виходить. Буду вдячний за Ваші ідеї!