Рекурсия, расстановка коней на доске - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Разработайте рекурсивную функцию или процедуру для решения задачи: Расставьте 8 коней на шахматной доске размером 8 х 8. Укажите количество всех расстановок

Решение задачи: «Рекурсия, расстановка коней на доске»

textual
Листинг программы
var matr:array [,] of Boolean;count:int64:=0;
procedure Show;
begin
  WriteLn(count);
  WriteLn(matr.Rows.Select(r->r.Select(x->x?' K':' .').JoinIntoString).JoinIntoString(NewLine));
end;
procedure Конь(Ещё,Row,Col:Integer);
begin
  if Ещё=0 then begin count+=1;if count mod 100000000=0 then Show;end
  else while Row<8 do begin while Col<8 do begin
    matr[Row,Col]:=True;Конь(Ещё-1,Row,Col+1);matr[Row,Col]:=False;Col+=1;end;
    Col:=0;Row+=1;end;
end;
begin
  SetLength(matr,8,8);
  Конь(8,0,0);
  WriteLn(count);
end.

Объяснение кода листинга программы

  1. Объявлены две переменные: матрица matr типа array [,] of Boolean и счетчик count типа int64 со значением 0.
  2. Определена процедура Show, которая выводит на экран количество ходов и расстановку коней на доске в виде строки.
  3. Определена процедура Конь, которая выполняет расстановку коней на доске. Если параметр Ещё равен 0, то увеличивается счетчик count и, если он кратен 100000000, вызывается процедура Show.
  4. В основной части программы создается матрица matr размером 8x8, вызывается процедура Конь с параметрами 8,0,0 и выводится на экран значение счетчика count.

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


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

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

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