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>
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