Related Articles

Related Articles

Total position where king can reach on a chessboard in exactly M moves | Set 2
  • Last Updated : 01 Apr, 2019

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.
King on chess
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.



  1. For all squares of the chessboard, check if a particular square is at m unit distance away or less from King’s current position.
  2. Increment count, if step 1 is true.
  3. Print the count

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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));
    }
}

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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));
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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));

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of the approach 
  
// Function to return the count of squares 
// that can be visited by king in m moves 
function countSquares($r, $c, $m
  
    // To store the count of squares 
    $squares = 0; 
  
    // Check all squares of 
    // the chessboard 
    for ($i = 1; $i <= 8; $i++) 
    
        for ($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 
$r = 4;
$c = 4;
$m = 1; 
  
echo countSquares($r, $c, $m);
  
// This code is contributed by Ryuga
?>

chevron_right


Output:

9

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :