#include <bits/stdc++.h>
using
namespace
std;
void
findSteps(
int
current_row,
int
current_column,
int
curr,
int
board_size,
int
steps,
int
* visited)
{
if
(current_row >= board_size || current_row < 0
|| current_column >= board_size || current_column < 0
|| curr > steps) {
return
;
}
if
(curr == steps) {
*((visited + (current_row)*board_size) + current_column) = 1;
return
;
}
findSteps(current_row - 2, current_column - 1,
curr + 1, board_size, steps, visited);
findSteps(current_row - 2, current_column + 1,
curr + 1, board_size, steps, visited);
findSteps(current_row - 1, current_column - 2,
curr + 1, board_size, steps, visited);
findSteps(current_row - 1, current_column - 1,
curr + 1, board_size, steps, visited);
findSteps(current_row - 1, current_column + 1,
curr + 1, board_size, steps, visited);
findSteps(current_row - 1, current_column + 2,
curr + 1, board_size, steps, visited);
findSteps(current_row + 1, current_column - 2,
curr + 1, board_size, steps, visited);
findSteps(current_row + 1, current_column - 1,
curr + 1, board_size, steps, visited);
findSteps(current_row + 1, current_column + 1,
curr + 1, board_size, steps, visited);
findSteps(current_row + 1, current_column + 2,
curr + 1, board_size, steps, visited);
findSteps(current_row + 2, current_column - 1,
curr + 1, board_size, steps, visited);
findSteps(current_row + 2, current_column + 1,
curr + 1, board_size, steps, visited);
return
;
}
int
countSteps(
int
current_row,
int
current_column,
int
board_size,
int
steps)
{
int
visited[board_size][board_size];
for
(
int
i = 0; i < board_size; i++) {
for
(
int
j = 0; j < board_size; j++) {
visited[i][j] = 0;
}
}
int
answer = 0;
findSteps(current_row, current_column, 0,
board_size, steps, (
int
*)visited);
for
(
int
i = 0; i < board_size; i++) {
for
(
int
j = 0; j < board_size; j++) {
if
(visited[i][j] == 1) {
answer++;
}
}
}
return
answer;
}
int
main()
{
int
board_size = 8, steps = 1;
int
current_row = 4, current_column = 4;
cout << countSteps(current_row, current_column,
board_size, steps);
return
0;
}