Рекурсия, расстановка коней на доске - 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.
Объяснение кода листинга программы
- Объявлены две переменные: матрица matr типа array [,] of Boolean и счетчик count типа int64 со значением 0.
- Определена процедура Show, которая выводит на экран количество ходов и расстановку коней на доске в виде строки.
- Определена процедура Конь, которая выполняет расстановку коней на доске. Если параметр Ещё равен 0, то увеличивается счетчик count и, если он кратен 100000000, вызывается процедура Show.
- В основной части программы создается матрица matr размером 8x8, вызывается процедура Конь с параметрами 8,0,0 и выводится на экран значение счетчика count.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д