C++ Program for Counting sets of 1s and 0s in a binary matrix Last Updated : 20 Apr, 2023 Comments Improve Suggest changes Like Article Like Report Given a n × m binary matrix, count the number of sets where a set can be formed one or more same values in a row or column. Examples: Input: 1 0 1 0 1 0 Output: 8 Explanation: There are six one-element sets (three 1s and three 0s). There are two two- element sets, the first one consists of the first and the third cells of the first row. The second one consists of the first and the third cells of the second row. Input: 1 0 1 1 Output: 6 The number of non-empty subsets of x elements is 2x - 1. We traverse every row and calculate numbers of 1’s and 0’s cells. For every u zeros and v ones, total sets is 2u - 1 + 2v - 1. We then traverse all columns and compute same values and compute overall sum. We finally subtract m x n from the overall sum as single elements are considered twice. CPP // CPP program to compute number of sets // in a binary matrix. #include <bits/stdc++.h> using namespace std; const int m = 3; // no of columns const int n = 2; // no of rows // function to calculate the number of // non empty sets of cell long long countSets(int a[n][m]) { // stores the final answer long long res = 0; // traverses row-wise for (int i = 0; i < n; i++) { int u = 0, v = 0; for (int j = 0; j < m; j++) a[i][j] ? u++ : v++; res += pow(2,u)-1 + pow(2,v)-1; } // traverses column wise for (int i = 0; i < m; i++) { int u = 0, v = 0; for (int j = 0; j < n; j++) a[j][i] ? u++ : v++; res += pow(2,u)-1 + pow(2,v)-1; } // at the end subtract n*m as no of // single sets have been added twice. return res-(n*m); } // driver program to test the above function. int main() { int a[][3] = {(1, 0, 1), (0, 1, 0)}; cout << countSets(a); return 0; } Output: 8 Time Complexity: O(n * m) Space Complexity: O(1) as no extra space has been taken. Please refer complete article on Counting sets of 1s and 0s in a binary matrix for more details! Comment More infoAdvertise with us Next Article C++ Program for Counting sets of 1s and 0s in a binary matrix K kartik Follow Improve Article Tags : Combinatorial Matrix C++ Programs C++ DSA +1 More Practice Tags : CPPCombinatorialMatrix Similar Reads Count the number of 1's and 0's in a binary array using STL in C++ ? Given a binary array, the task is to count the number of 1's and 0's in this array using STL in C++. Examples: Input: arr[] = {1, 0, 0, 1, 0, 0, 1} Output: 1's = 3, 0's = 4 Input: arr[] = {1, 1, 1, 1, 0, 0, 1} Output: 1's = 5, 0's = 2 Approach: We can count the same using count_if() function present 1 min read C++ Program to Check if a given matrix is sparse or not A matrix is a two-dimensional data object having m rows and n columns, therefore a total of m*n values. If most of the values of a matrix are 0 then we say that the matrix is sparse. Consider a definition of Sparse where a matrix is considered sparse if the number of 0s is more than half of the elem 2 min read C++ Program for Identity Matrix Introduction to Identity Matrix : The dictionary definition of an Identity Matrix is a square matrix in which all the elements of the principal or main diagonal are 1's and all other elements are zeros. In the below image, every matrix is an Identity Matrix. In linear algebra, this is sometimes call 3 min read C++ Program for Markov matrix Given a m x n 2D matrix, check if it is a Markov Matrix.Markov Matrix : The matrix in which the sum of each row is equal to 1. Example of Markov Matrix Examples: Input : 1 0 0 0.5 0 0.5 0 0 1 Output : yes Explanation : Sum of each row results to 1, therefore it is a Markov Matrix. Input : 1 0 0 0 0 2 min read Count total set bits in all numbers from 1 to N | Set 3 Given a positive integer N, the task is to count the total number of set bits in binary representation of all the numbers from 1 to N. Examples: Input: N = 3 Output: 4 setBits(1) + setBits(2) + setBits(3) = 1 + 1 + 2 = 4 Input: N = 6 Output: 9 Approach: Solution to this problem has been published in 12 min read Like