Recuento de casillas alcanzables por un alfil colocado inicialmente en la parte superior izquierda de un tablero de ajedrez NxM determinado

Dados dos números enteros N y M que representan un tablero de ajedrez de N x M , la tarea es encontrar el número máximo de casillas que el alfil puede alcanzar usando cualquier número de movimientos si inicialmente se coloca en la esquina superior izquierda del tablero de ajedrez.

Ejemplos:

Entrada: N = 8, M = 8
Salida: 32
Explicación: El alfil está inicialmente parado en (1, 1) que es una ficha de color blanco o negro. Por lo tanto, se pueden visitar todas las fichas negras o blancas desde (1, 1) usando una secuencia de movimientos dependiendo del color de la ficha (1, 1). 

Entrada: N = 7, M = 3
Salida: 11

 

Enfoque: El problema dado se puede resolver observando el hecho de que el número de mosaicos alcanzables desde (1, 1) son los mosaicos con el mismo color que el de (1, 1) . El recuento de dichos mosaicos se puede calcular mediante la fórmula ceil((N*M)/2) . El caso en el que la afirmación mencionada anteriormente resulta incorrecta es el caso en el que N = 1 o M = 1 . En tales casos, no se puede acceder a ninguna celda desde (1, 1) y, por lo tanto, la respuesta requerida es 1 .

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program of the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the maximum number of
// reachable squares by a bishop in an
// N x M chessboard
int maximumSquares(int N, int M)
{
    // If either of N or M is equal to 1
    if (N == 1 || M == 1) {
        return 1;
    }
 
    // Otherwise the required
    // answer is Ceil(N*M/2)
    // Return Answer
    return (N * M + 1) / 2;
}
 
// Driver Code
int main()
{
    int N = 7;
    int M = 3;
 
    cout << maximumSquares(N, M);
 
    return 0;
}

Java

// Java program for the above approach
 
class GFG {
 
// Function to find the maximum number of
// reachable squares by a bishop in an
// N x M chessboard
static int maximumSquares(int N, int M)
{
   
    // If either of N or M is equal to 1
    if (N == 1 || M == 1) {
        return 1;
    }
 
    // Otherwise the required
    // answer is Ceil(N*M/2)
    // Return Answer
    return (N * M + 1) / 2;
}
 
// Driver Code
public static void main (String[] args) {
         
    int N = 7;
    int M = 3;
 
    System.out.println(maximumSquares(N, M));
}
}
 
// This code is contributed by target_2.

Python

# Python program of the above approach
 
# Function to find the maximum number of
# reachable squares by a bishop in an
# N x M chessboard
def maximumSquares(N, M) :
 
    # If either of N or M is equal to 1
    if (N == 1 or M == 1) :
        return 1
 
    # Otherwise the required
    # answer is Ceil(N*M/2)
    # Return Answer
    return (N * M + 1) // 2
 
# Driver Code
if __name__ == "__main__" :
    N = 7
    M = 3
 
    print(maximumSquares(N, M))
     
    # This code is contributed by Samim Hossain Mondal.

C#

// C# program for the above approach
using System;
 
class GFG {
 
// Function to find the maximum number of
// reachable squares by a bishop in an
// N x M chessboard
static int maximumSquares(int N, int M)
{
   
    // If either of N or M is equal to 1
    if (N == 1 || M == 1) {
        return 1;
    }
 
    // Otherwise the required
    // answer is Ceil(N*M/2)
    // Return Answer
    return (N * M + 1) / 2;
}
 
// Driver Code
public static void Main () {
         
    int N = 7;
    int M = 3;
 
    Console.Write(maximumSquares(N, M));
}
}
 
// This code is contributed by Samim Hossain Mondal.

Javascript

<script>
// Javascript program of the above approach
 
// Function to find the maximum number of
// reachable squares by a bishop in an
// N x M chessboard
function maximumSquares(N, M)
{
    // If either of N or M is equal to 1
    if (N == 1 || M == 1) {
        return 1;
    }
 
    // Otherwise the required
    // answer is Ceil(N*M/2)
    // Return Answer
    return (N * M + 1) / 2;
}
 
// Driver Code
let N = 7;
let M = 3;
 
document.write(maximumSquares(N, M));
 
// This code is contributed by Samim Hossain Mondal.
</script>
Producción

11

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por 18bhupenderyadav18 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *