using System;
namespace Application
{
class Knight
{
// Размер доски
const int Size = 6;
// Доска
int[,] board = new int[Size, Size];
// Кол-во найденных решений
private int count;
public static void Main (string[] args)
{
// Ввод данных без контроля корректности ввода.
try {
Console.Write ("Начальная клетка:");
string ans = Console.ReadLine ().Trim ().ToLower ();
int col = (int)ans[0] - (int)'a';
int row = Size - int.Parse (ans[1].ToString ());
new Knight ().Run (row, col);
} catch (Exception e) {
Console.WriteLine ("{0}", e.Message);
}
}
// Печать результата
private void Print ()
{
Console.WriteLine ("Решение №{0}:", ++count);
for (int i = 0; i < Size; ++i) {
for (int j = 0; j < Size; ++j) {
Console.Write ("|{0,2}", board[i, j]);
}
Console.WriteLine ("|");
}
}
private void Run (int col, int row)
{
count = 0;
Solve (col, row, 0);
Console.WriteLine ("Найдено {0} решений", count);
}
// Собственно, рекурсивная функция
private void Solve (int col, int row, int mov)
{
// Если можем разместить
if (IsEmptyField (col, row)) {
// Размещаем
board[col, row] = ++mov;
// Если еще есть пустые клетки
if (mov < Size * Size) {
// Перебор возможных ходов
Solve (col + 1, row + 2, mov);
Solve (col + 1, row - 2, mov);
Solve (col + 2, row + 1, mov);
Solve (col + 2, row - 1, mov);
Solve (col - 1, row - 2, mov);
Solve (col - 1, row + 2, mov);
Solve (col - 2, row - 1, mov);
Solve (col - 2, row + 1, mov);
} else {
// Все клетки заполнены. Значит есть решение
Print ();
}
// Уберем с клетки коня
board[col, row] = 0;
}
}
// Проверка возможности размещения на заданном поле
private bool IsEmptyField (int col, int row)
{
return !(col < 0 || row < 0 || col >= Size || row >= Size || board[col, row] != 0);
}
}
}
Начальная клетка:a1
Решение №1:
|36|17|30|25|12|15|
|31|24|13|16|29|26|
| 8|35|18|27|14|11|
|23|32| 9| 4|19|28|
|34| 7| 2|21|10| 5|
| 1|22|33| 6| 3|20|
Решение №2:
|36|17|30|25|12|15|
|31|26|13|16|29|24|
| 8|35|18|27|14|11|
|19|32| 9| 4|23|28|
|34| 7| 2|21|10| 5|
| 1|20|33| 6| 3|22|
Решение №3:
|36|17|30|19|12|15|
|31|26|13|16|29|20|
| 8|35|18|27|14|11|
|25|32| 9| 4|21|28|
|34| 7| 2|23|10| 5|
| 1|24|33| 6| 3|22|
Решение №4:
|36|17|30|19|12|15|
|31|20|13|16|29|26|
| 8|35|18|27|14|11|
|21|32| 9| 4|25|28|
|34| 7| 2|23|10| 5|
| 1|22|33| 6| 3|24|
Решение №5:
|14|29|26|33|12|31|
|27|34|13|30|25|22|
| 8|15|28|23|32|11|
|35|18| 9| 4|21|24|
|16| 7| 2|19|10| 5|
| 1|36|17| 6| 3|20|
Решение №6:
|14|27|30|23|12|25|
|29|34|13|26|31|22|
| 8|15|28|33|24|11|
|35|18| 9| 4|21|32|
|16| 7| 2|19|10| 5|
| 1|36|17| 6| 3|20|
Решение №7:
|14|29|26|33|12|31|
|27|22|13|30|25|34|
| 8|15|28|23|32|11|
|21|18| 9| 4|35|24|
|16| 7| 2|19|10| 5|
| 1|20|17| 6| 3|36|
Решение №8:
|14|27|30|23|12|25|
|29|22|13|26|31|34|
| 8|15|28|33|24|11|
|21|18| 9| 4|35|32|
|16| 7| 2|19|10| 5|
| 1|20|17| 6| 3|36|
Решение №9:
|14|25|22|33|12|27|
|23|34|13|26|21|32|
| 8|15|24|19|28|11|
|35|18| 9| 4|31|20|
|16| 7| 2|29|10| 5|
| 1|36|17| 6| 3|30|
Решение №10:
|14|25|22|33|12|27|
|23|32|13|26|21|34|
| 8|15|24|19|28|11|
|31|18| 9| 4|35|20|
|16| 7| 2|29|10| 5|
| 1|30|17| 6| 3|36|
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.