Dada una array arr[] que consta de N enteros. Dos jugadores, el Jugador 1 y el Jugador 2 , juegan turno a turno en el que un jugador puede realizar cualquiera de los siguientes dos movimientos:
- Convierta un elemento de array uniforme en cualquier otro entero.
- Eliminar elemento de array impar.
El jugador que no puede hacer ningún movimiento pierde el juego. La tarea es imprimir el ganador del juego. Imprime -1 si el juego puede continuar para siempre.
Ejemplos:
Entrada: arr[] = {3, 1, 9, 7}
Salida: Jugador 2
Explicación: Dado que todos los elementos de la array son impares, no es posible la conversión.
Turno 1: el jugador 1 elimina a 3.
Turno 2: el jugador 2 elimina a 1.
Turno 3: el jugador 1 elimina a 9.
Turno 4: el jugador 2 elimina a 7. Ahora, al jugador 1 no le quedan movimientos. Por lo tanto, el jugador 2 gana el juego.Entrada: arr[]={4, 8}
Salida: -1
Enfoque: siga los pasos a continuación para resolver el problema:
- Atraviesa la array .
- Cuente el número de elementos pares e impares presentes en la array .
- Si el número de elementos pares es cero , realice las siguientes operaciones:
- Si el conteo de impares es par, entonces el jugador 2 ganará el juego.
- De lo contrario, el jugador 1 ganará el juego.
- Si el conteo de impares es impar y solo un elemento par está presente en la array, entonces el jugador 1 ganará el juego.
- De lo contrario, habrá un empate cada vez.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to evaluate the // winner of the game void findWinner(int arr[], int N) { // Stores count of odd // array elements int odd = 0; // Stores count of even // array elements int even = 0; // Traverse the array for (int i = 0; i < N; i++) { // If array element is odd if (arr[i] % 2 == 1) { odd++; } // Otherwise else { even++; } } // If count of even is zero if (even == 0) { // If count of odd is even if (odd % 2 == 0) { cout << "Player 2" << endl; } // If count of odd is odd else if (odd % 2 == 1) { cout << "Player 1" << endl; } } // If count of odd is odd and // count of even is one else if (even == 1 && odd % 2 == 1) { cout << "Player 1" << endl; } // Otherwise else { cout << -1 << endl; } } // Driver Code int main() { int arr[] = { 3, 1, 9, 7 }; int N = sizeof(arr) / sizeof(arr[0]); findWinner(arr, N); return 0; }
Java
// Java program for the above approach import java.util.*; class GFG{ // Function to evaluate the // winner of the game static void findWinner(int arr[], int N) { // Stores count of odd // array elements int odd = 0; // Stores count of even // array elements int even = 0; // Traverse the array for(int i = 0; i < N; i++) { // If array element is odd if (arr[i] % 2 == 1) { odd++; } // Otherwise else { even++; } } // If count of even is zero if (even == 0) { // If count of odd is even if (odd % 2 == 0) { System.out.println("Player 2"); } // If count of odd is odd else if (odd % 2 == 1) { System.out.println("Player 1"); } } // If count of odd is odd and // count of even is one else if (even == 1 && odd % 2 == 1) { System.out.println("Player 1"); } // Otherwise else { System.out.println(-1); } } // Driver Code public static void main(String args[]) { int arr[] = { 3, 1, 9, 7 }; int N = arr.length; findWinner(arr, N); } } // This code is contributed by ipg2016107
Python3
# Python3 program for the above approach # Function to evaluate the # winner of the game def findWinner(arr, N): # Stores count of odd # array elements odd = 0 # Stores count of even # array elements even = 0 # Traverse the array for i in range(N): # If array element is odd if (arr[i] % 2 == 1): odd += 1 # Otherwise else: even += 1 # If count of even is zero if (even == 0): # If count of odd is even if (odd % 2 == 0): print("Player 2") # If count of odd is odd elif (odd % 2 == 1): print("Player 1") # If count of odd is odd and # count of even is one elif (even == 1 and odd % 2 == 1): print("Player 1") # Otherwise else: print(-1) # Driver code if __name__ == '__main__': arr = [ 3, 1, 9, 7 ] N = len(arr) findWinner(arr, N) # This code is contributed by Shivam Singh
C#
// C# program for the above approach using System; class GFG{ // Function to evaluate the // winner of the game static void findWinner(int []arr, int N) { // Stores count of odd // array elements int odd = 0; // Stores count of even // array elements int even = 0; // Traverse the array for(int i = 0; i < N; i++) { // If array element is odd if (arr[i] % 2 == 1) { odd++; } // Otherwise else { even++; } } // If count of even is zero if (even == 0) { // If count of odd is even if (odd % 2 == 0) { Console.WriteLine("Player 2"); } // If count of odd is odd else if (odd % 2 == 1) { Console.WriteLine("Player 1"); } } // If count of odd is odd and // count of even is one else if (even == 1 && odd % 2 == 1) { Console.WriteLine("Player 1"); } // Otherwise else { Console.WriteLine(-1); } } // Driver Code public static void Main() { int []arr = { 3, 1, 9, 7 }; int N = arr.Length; findWinner(arr, N); } } // This code is contributed by bgangwar59
Javascript
<script> // JavaScript program to implement // the above approach // Function to evaluate the // winner of the game function findWinner(arr, N) { // Stores count of odd // array elements let odd = 0; // Stores count of even // array elements let even = 0; // Traverse the array for(let i = 0; i < N; i++) { // If array element is odd if (arr[i] % 2 == 1) { odd++; } // Otherwise else { even++; } } // If count of even is zero if (even == 0) { // If count of odd is even if (odd % 2 == 0) { document.write("Player 2"); } // If count of odd is odd else if (odd % 2 == 1) { document.write("Player 1"); } } // If count of odd is odd and // count of even is one else if (even == 1 && odd % 2 == 1) { document.write("Player 1"); } // Otherwise else { document.write(-1); } } // Driver Code let arr = [ 3, 1, 9, 7 ]; let N = arr.length; findWinner(arr, N); </script>
Player 2
Complejidad temporal: O(N)
Espacio auxiliar : O(1)
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA