using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
class
GFG {
static
int
m, n, k;
static
int
count = 0;
static
void
makeBoard(
char
[][] board)
{
for
(
int
i = 0; i < m; i++) {
for
(
int
j = 0; j < n; j++) {
board[i][j] =
'_'
;
}
}
}
static
void
displayBoard(
char
[][] board)
{
for
(
int
i = 0; i < m; i++) {
for
(
int
j = 0; j < n; j++) {
Console.Write(
" "
+ board[i][j] +
" "
);
}
Console.WriteLine();
}
Console.WriteLine();
}
static
void
attack(
int
i,
int
j,
char
a,
char
[][] board)
{
if
((i + 2) < m && (j - 1) >= 0) {
board[i + 2][j - 1] = a;
}
if
((i - 2) >= 0 && (j - 1) >= 0) {
board[i - 2][j - 1] = a;
}
if
((i + 2) < m && (j + 1) < n) {
board[i + 2][j + 1] = a;
}
if
((i - 2) >= 0 && (j + 1) < n) {
board[i - 2][j + 1] = a;
}
if
((i + 1) < m && (j + 2) < n) {
board[i + 1][j + 2] = a;
}
if
((i - 1) >= 0 && (j + 2) < n) {
board[i - 1][j + 2] = a;
}
if
((i + 1) < m && (j - 2) >= 0) {
board[i + 1][j - 2] = a;
}
if
((i - 1) >= 0 && (j - 2) >= 0) {
board[i - 1][j - 2] = a;
}
}
static
bool
canPlace(
int
i,
int
j,
char
[][] board)
{
if
(board[i][j] ==
'_'
)
return
true
;
else
return
false
;
}
static
void
place(
int
i,
int
j,
char
k,
char
a,
char
[][] board,
char
[][] new_board)
{
for
(
int
y = 0; y < m; y++) {
for
(
int
z = 0; z < n; z++) {
new_board[y][z] = board[y][z];
}
}
new_board[i][j] = k;
attack(i, j, a, new_board);
}
static
void
kkn(
int
k,
int
sti,
int
stj,
char
[][] board)
{
if
(k == 0) {
displayBoard(board);
count++;
}
else
{
for
(
int
i = sti; i < m; i++) {
for
(
int
j = stj; j < n; j++) {
if
(canPlace(i, j, board)) {
char
[][] new_board =
new
char
[m][];
for
(
int
x = 0; x < m; x++) {
new_board[x] =
new
char
[n];
}
place(i, j,
'K'
,
'A'
, board,
new_board);
kkn(k - 1, i, j, new_board);
}
}
stj = 0;
}
}
}
public
static
void
Main(String[] args)
{
m = 4;
n = 3;
k = 6;
count = 0;
char
[][] board =
new
char
[m][];
for
(
int
i = 0; i < m; i++) {
board[i] =
new
char
[n];
}
makeBoard(board);
kkn(k, 0, 0, board);
Console.WriteLine(
"\n Total number of solutions : "
+ count);
}
}