Open In App

# Total position where king can reach on a chessboard in exactly M moves | Set 2

Given the position of the king on an 8 X 8 chessboard, the task is to count the total number of squares that can be visited by the king in m moves. The position of the king is denoted using row and column number.
Note: The square which is currently acquired by the king is already visited and will be counted in the result.
Examples:

Input: r = 4, c = 4, m = 1
Output: 9
Input: r = 4, c = 4, m = 2
Output: 25

Approach: A king can move one square in any direction (i.e horizontally, vertically and diagonally). So, in one move king can visit its adjacent squares. So, A square which is within m units distance (Considering 1 Square as 1 unit distance) from the king’s current position can be visited in m moves.
For all squares of the chessboard, check if a particular square is at m unit distance away or less from King’s current position.

1. Increment count, if step 1 is true.
2. Print the count

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the count of squares``// that can be visited by king in m moves``int` `countSquares(``int` `r, ``int` `c, ``int` `m)``{` `    ``// To store the count of squares``    ``int` `squares = 0;` `    ``// Check all squares of``    ``// the chessboard``    ``for` `(``int` `i = 1; i <= 8; i++) {``        ``for` `(``int` `j = 1; j <= 8; j++) {` `            ``// Check if square (i, j) is``            ``// at a distance <= m units``            ``// from king's current position``            ``if` `(max(``abs``(i - r), ``abs``(j - c)) <= m)``                ``squares++;``        ``}``    ``}` `    ``// Return count of squares``    ``return` `squares;``}` `// Driver code``int` `main()``{``    ``int` `r = 4, c = 4, m = 1;` `    ``cout << countSquares(r, c, m) << endl;` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GFG {` `    ``// Function to return the count of squares``    ``// that can be visited by king in m moves``    ``static` `int` `countSquares(``int` `r, ``int` `c, ``int` `m)``    ``{``        ``// To store the count of squares``        ``int` `squares = ``0``;` `        ``// Check all squares of``        ``// the chessboard``        ``for` `(``int` `i = ``1``; i <= ``8``; i++) {``            ``for` `(``int` `j = ``1``; j <= ``8``; j++) {` `                ``// Check if square (i, j) is``                ``// at a distance <= m units``                ``// from king's current position``                ``if` `(Math.max(Math.abs(i - r), Math.abs(j - c)) <= m)``                    ``squares++;``            ``}``        ``}` `        ``// Return count of squares``        ``return` `squares;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `r = ``4``, c = ``4``, m = ``1``;``        ``System.out.print(countSquares(r, c, m));``    ``}``}`

## C#

 `// C# implementation of the approach``using` `System;``class` `GFG {` `    ``// Function to return the count of squares``    ``// that can be visited by king in m moves``    ``static` `int` `countSquares(``int` `r, ``int` `c, ``int` `m)``    ``{``        ``// To store the count of squares``        ``int` `squares = 0;` `        ``// Check all squares of``        ``// the chessboard``        ``for` `(``int` `i = 1; i <= 8; i++) {``            ``for` `(``int` `j = 1; j <= 8; j++) {` `                ``// Check if square (i, j) is``                ``// at a distance <= m units``                ``// from king's current position``                ``if` `(Math.Max(Math.Abs(i - r), Math.Abs(j - c)) <= m)``                    ``squares++;``            ``}``        ``}` `        ``// Return count of squares``        ``return` `squares;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `r = 4, c = 4, m = 1;``        ``Console.Write(countSquares(r, c, m));``    ``}``}`

## Python3

 `# Python implementation of the approach` `# Function to return the count of squares``# that can be visited by king in m moves``def` `countSquares(r, c, m):` `    ``# To store the count of squares``    ``squares ``=` `0``    ` `    ``# Check all squares of``    ``# the chessboard``    ``for` `i ``in` `range` `(``1``, ``9``):``        ``for` `j ``in` `range` `(``1``, ``9``):``            ` `            ``# Check if square (i, j) is``            ``# at a distance <= m units``            ``# from king's current position``            ``if``(``max``(``abs``(i ``-` `r), ``abs``(j ``-` `c)) <``=` `m):``                ``squares ``=` `squares ``+` `1``        ` `    ``# Return count of squares``    ``return` `squares` `# Driver code``r ``=` `4``c ``=` `4``m ``=` `1` `print``(countSquares(r, c, m));`

## PHP

 ``

## Javascript

 ``

Output:

`9`

Time Complexity: O(1), since the loop runs for a total of 64 times, that is constant time only.
Auxiliary Space: O(1), since no extra space has been taken.