Количество столбцов с нечетным числом единиц

Опубликовано: 12 Января, 2022

Для двумерной двоичной матрицы размером N * M задача состоит в том, чтобы найти количество столбцов, имеющих нечетное количество единиц .

Примеры:

Input: mat[][] = {
{0, 0, 1, 0},
{1, 0, 0, 1},
{1, 1, 1, 0}}
Output: 2
Column 2 and 4 are the only columns
having odd number of 1’s.

Input: mat[][] = {
{1, 1, 0, 0, 1, 1},
{0, 1, 0, 1, 0, 0},
{1, 1, 1, 0, 1, 0}}
Output: 4

Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.

Подход: Найдите сумму всех столбцов матрицы по отдельности, столбцы с нечетной суммой - это столбцы с нечетным числом единиц.

Below is the implementation of the above approach:

C++

// C++ implementation of the approach
#include <iostream>
using namespace std;
  
const int col = 4;
const int row = 3;
  
// Function to return the count of
// columns having odd number of 1s
int countOddColumn(int arr[row][col])
{
  
    // To store the sum of every column
    int sum[col] = { 0 };
  
    // For every column
    for (int i = 0; i < col; i++) {
  
        // Sum of all the element
        // of the current column
        for (int j = 0; j < row; j++) {
            sum[i] += arr[j][i];
        }
    }
  
    // To store the required count
    int count = 0;
  
    for (int i = 0; i < col; i++) {
  
        // If the sum of the current
        // column is odd
        if (sum[i] % 2 == 1) {
            count++;
        }
    }
  
    return count;
}
  
// Driver code
int main()
{
    int arr[row][col] = { { 0, 0, 1, 0 },
                          { 1, 0, 0, 1 },
                          { 1, 1, 1, 0 } };
  
    cout << countOddColumn((arr));
  
    return 0;
}

Java

// Java implementation of the approach
class GFG
{
static int col = 4;
static int row = 3;
  
// Function to return the count of
// columns having odd number of 1s
static int countOddColumn(int arr[][])
{
  
    // To store the sum of every column
    int []sum = new int[col];
  
    // For every column
    for (int i = 0; i < col; i++)
    {
  
        // Sum of all the element
        // of the current column
        for (int j = 0; j < row; j++) 
        {
            sum[i] += arr[j][i];
        }
    }
  
    // To store the required count
    int count = 0;
  
    for (int i = 0; i < col; i++)
    {
  
        // If the sum of the current
        // column is odd
        if (sum[i] % 2 == 1
        {
            count++;
        }
    }
    return count;
}
  
// Driver code
public static void main(String []args) 
{
    int arr[][] = {{ 0, 0, 1, 0 },
                   { 1, 0, 0, 1 },
                   { 1, 1, 1, 0 }};
  
    System.out.println(countOddColumn((arr)));
}
}
  
// This code is contributed by Rajput-Ji

Python3

# Python3 implementation of the approach
col = 4
row = 3
  
# Function to return the count of
# columns having odd number of 1s
def countOddColumn(arr):
  
    # To store the sum of every column
    sum = [0 for i in range(col)]
  
    # For every column
    for i in range(col):
  
        # Sum of all the element
        # of the current column
        for j in range(row):
            sum[i] += arr[j][i]
  
    # To store the required count
    count = 0
  
    for i in range(col):
  
        # If the sum of the current
        # column is odd
        if (sum[i] % 2 == 1):
            count += 1
  
    return count
  
# Driver code
arr = [[0, 0, 1, 0],
       [1, 0, 0, 1],
       [1, 1, 1, 0]]
  
print(countOddColumn((arr)))
  
# This code is contributed by Mohit Kumar

C#

// C# implementation of the approach 
using System;
  
class GFG 
    static int col = 4; 
    static int row = 3; 
      
    // Function to return the count of 
    // columns having odd number of 1s 
    static int countOddColumn(int [,]arr) 
    
      
        // To store the sum of every column 
        int []sum = new int[col]; 
      
        // For every column 
        for (int i = 0; i < col; i++) 
        
      
            // Sum of all the element 
            // of the current column 
            for (int j = 0; j < row; j++) 
            
                sum[i] += arr[j, i]; 
            
        
      
        // To store the required count 
        int count = 0; 
      
        for (int i = 0; i < col; i++) 
        
      
            // If the sum of the current 
            // column is odd 
            if (sum[i] % 2 == 1) 
            
                count++; 
            
        
        return count; 
    
      
    // Driver code 
    public static void Main() 
    
        int [,]arr = {{ 0, 0, 1, 0 }, 
                      { 1, 0, 0, 1 }, 
                      { 1, 1, 1, 0 }}; 
      
        Console.WriteLine(countOddColumn((arr))); 
    
}
  
// This code is contributed by kanugargng
Output:
2

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.