Compruebe si se puede seleccionar un número de cada fila de modo que xor de los números sea mayor que cero

Dada una array 2-D de elementos de array de orden NXM , la tarea es verificar si podemos seleccionar un número de cada fila de tal manera que xor de los números seleccionados sea mayor que 0
Nota : Hay un mínimo de 2 filas. 
Ejemplos: 
 

Input: a[][] = {{7, 7, 7}, 
                {10, 10, 7}} 
Output: Yes

Input: a[][] = {{1, 1, 1},
                {1, 1, 1}, 
                {1, 1, 1}, 
                {1, 1, 1}} 
Output: No 

Enfoque : inicialmente verifique si xor de los elementos de la primera columna de cada fila es 0 o no. Si es distinto de cero, entonces es posible. Si es cero, compruebe si alguna de las filas tiene dos o más elementos distintos, entonces también es posible. Si no se cumplen las dos condiciones anteriores, entonces no es posible. 
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ program to implement
// the above approach
 
#include <bits/stdc++.h>
using namespace std;
#define N 2
#define M 3
 
// Function to check if a number from every row
// can be selected such that xor of the numbers
// is greater than zero
bool check(int mat[N][M])
{
    int xorr = 0;
 
    // Find the xor of first
    // column for every row
    for (int i = 0; i < N; i++) {
        xorr ^= mat[i][0];
    }
 
    // If Xorr is 0
    if (xorr != 0)
        return true;
 
    // Traverse in the matrix
    for (int i = 0; i < N; i++) {
        for (int j = 1; j < M; j++) {
 
            // Check is atleast
            // 2 distinct elements
            if (mat[i][j] != mat[i][0])
                return true;
        }
    }
 
    return false;
}
 
// Driver code
int main()
{
    int mat[N][M] = { { 7, 7, 7 },
                      { 10, 10, 7 } };
 
    if (check(mat))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}

Java

// Java program to implement
// the above approach
import java.io.*;
 
class GFG
{
    static int N = 2;
    static int M = 3;
     
    // Function to check if a number
    // from every row can be selected
    // such that xor of the numbers
    // is greater than zero
    static boolean check(int mat[][])
    {
        int xorr = 0;
     
        // Find the xor of first
        // column for every row
        for (int i = 0; i < N; i++)
        {
            xorr ^= mat[i] [0];
        }
     
        // If Xorr is 0
        if (xorr != 0)
            return true;
     
        // Traverse in the matrix
        for (int i = 0; i < N; i++)
        {
            for (int j = 1; j < M; j++)
            {
     
                // Check is atleast
                // 2 distinct elements
                if (mat[i] [j] != mat[i] [0])
                    return true;
            }
        }
     
        return false;
    }
     
    // Driver code
    public static void main (String[] args)
    {
         
        int mat[][] = {{ 7, 7, 7 },
                    { 10, 10, 7 }};
     
        if (check(mat))
            System.out.println("Yes");
        else
            System.out.println("No");
 
    }
}
 
// This code is contributed by ajit

Python3

# Python3 program to implement
# the above approach
N = 2
M = 3
 
# Function to check if a number from every row
# can be selected such that xor of the numbers
# is greater than zero
def check(mat):
 
    xorr = 0
 
    # Find the xor of first
    # column for every row
    for i in range(N):
        xorr ^= mat[i][0]
 
    # If Xorr is 0
    if (xorr != 0):
        return True
 
    # Traverse in the matrix
    for i in range(N):
        for j in range(1, M):
 
            # Check is atleast
            # 2 distinct elements
            if (mat[i][j] != mat[i][0]):
                return True
         
    return False
 
# Driver code
mat = [[ 7, 7, 7 ],
       [ 10, 10, 7 ]]
 
if (check(mat)):
    print("Yes")
else:
    print("No")
 
# This code is contributed by mohit kumar

C#

// C# program to implement
// the above approach
using System;
 
class GFG
{
    static int N = 2;
    static int M = 3;
     
    // Function to check if a number
    // from every row can be selected
    // such that xor of the numbers
    // is greater than zero
    static bool check(int [,]mat)
    {
        int xorr = 0;
     
        // Find the xor of first
        // column for every row
        for (int i = 0; i < N; i++)
        {
            xorr ^= mat[i, 0];
        }
     
        // If Xorr is 0
        if (xorr != 0)
            return true;
     
        // Traverse in the matrix
        for (int i = 0; i < N; i++)
        {
            for (int j = 1; j < M; j++)
            {
     
                // Check is atleast
                // 2 distinct elements
                if (mat[i, j] != mat[i, 0])
                    return true;
            }
        }
     
        return false;
    }
     
    // Driver code
    static void Main()
    {
        int [,]mat = {{ 7, 7, 7 },
                      { 10, 10, 7 }};
     
        if (check(mat))
            Console.Write("Yes");
        else
            Console.Write("No");
    }
}
 
// This code is contributed by mits

PHP

<?php
// PHP program to implement
// the above approach
 
$N = 2;
$M = 3;
 
// Function to check if a number from every row
// can be selected such that xor of the numbers
// is greater than zero
function check($mat)
{
     
    global $N ;
    global $M ;
 
    $xorr = 0;
 
    // Find the xor of first
    // column for every row
    for ($i = 0; $i < $N; $i++)
    {
        $xorr =     $xorr ^ $mat[$i][0];
    }
 
    // If Xorr is 0
    if ($xorr != 0)
        return true;
 
    // Traverse in the matrix
    for ($i = 0; $i < $N; $i++)
    {
        for ( $j = 1; $j < $M; $j++)
        {
 
            // Check is atleast
            // 2 distinct elements
            if ($mat[$i][$j] != $mat[$i][0])
                return true;
        }
    }
    return false;
}
 
    // Driver code
    $mat = array(array( 7, 7, 7 ),
                    array( 10, 10, 7 ));
 
    if (check($mat))
        echo "Yes";
    else
        echo "No";
 
// This code is contributed by Tushil..
?>

Javascript

<script>
// Javascript program to implement
// the above approach
 
let N = 2;
let M = 3;
 
// Function to check if a number from every row
// can be selected such that xor of the numbers
// is greater than zero
function check(mat)
{
    let xorr = 0;
 
    // Find the xor of first
    // column for every row
    for (let i = 0; i < N; i++) {
        xorr ^= mat[i][0];
    }
 
    // If Xorr is 0
    if (xorr != 0)
        return true;
 
    // Traverse in the matrix
    for (let i = 0; i < N; i++) {
        for (let j = 1; j < M; j++) {
 
            // Check is atleast
            // 2 distinct elements
            if (mat[i][j] != mat[i][0])
                return true;
        }
    }
 
    return false;
}
 
// Driver code
    let mat = [ [ 7, 7, 7 ],
                      [ 10, 10, 7 ] ];
 
    if (check(mat))
        document.write("Yes");
    else
        document.write("No");
 
// This code is contributed by souravmahato348.
</script>
Producción: 

Yes

 

Complejidad de tiempo: O(N * M)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por Striver 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 *