Примечание: - Я решил вышеупомянутую проблему с помощью метода обратного отслеживания, пробуя различные способы, я нахожусь в поиске очень эффективного пути / шаблона.
Нам дана шахматная доскаразмер 'N' X 'N'.Но он может содержать любое количество белых квадратов и черных квадратов, которые тоже в любом порядке.
Скажем, есть 'a'-квадраты белого цвета и 'b'-квадраты черного цвета,затем
[a + b = n * n]
Мы должны продолжать делать ход с черными квадратами на шахматной доске, пока не останется хода.
Вот что происходит в движении: -
1) Мы выбираем черный квадрат в координате :-( строка, столбец) и перемещаем его в (строка-1, столбец + 1), только есликоордината (строка-1, столбец + 1) также содержит черный квадрат.После перемещения в новую позицию старая позиция, т. Е. [Строка, столбец] становится пустой, т. Е. Ее цвет становится белым.
ИЛИ
2) Мы выбираемчерный квадрат в координате :-( строка, столбец) и переместите его в (строка-1, столбец-1), только если координата (строка-1, столбец-1) также содержит черный квадрат. После того, как он перемещен в новую позицию, старая позиция, т. Е. [Строка, столбец] становится пустой, т. Е. Ее цвет становится белым.
Мы должны закончить эту игру за наименьшее количествоходы и вопрос в том, чтобы найти последовательность этих ходов.
Позволяет обозначить черный квадрат "1" и белый квадрат "0" .. ...
Пример: -
3X3 шахматная доска: -
0 1 0
1 0 1
0 0 0
Последовательность ходов, которыезаканчивает игру за минимальное количество ходов: -
1) Переместите черный квадрат на [1,0] в [0,1] ... Теперь шахматная доска выглядит следующим образом: -
0 1 0
0 0 1
0 0 0
2) Перемещаем черный квадратe на [1,2] - [0,1], и шахматная доска выглядит следующим образом: -
0 1 0
0 0 0
0 0 0
Теперь не осталось действительных ходов, и игра заканчивается: -)
Учитывая шахматную доску размером 'N' x 'N' и любую конфигурацию черных и белых квадратов, как найтипоследовательность ходов, которая завершает игру за минимальное количество ходов?