C++ Program to find number of working components


Suppose, there is an electronic control board that implies the status of all the components in a system. Each component status is depicted using two LEDs; if any one of them is lit then that component is working. In the board, there are n rows of LED lights, and m components status are in a particular row; that means there are 2*m LED lights in each row. A given array 'grid' depicts the status of the board, if a light is lit then it is '1', otherwise '0'. We have to find out the number of components currently working from the given board status.

Problem Category

Various problems in programming can be solved through different techniques. To solve a problem, we have to devise an algorithm first, and to do that we have to study the particular problem in detail. A recursive approach can be used if there is a recurring appearance of the same problem over and over again; alternatively, we can use iterative structures also. Control statements such as if-else and switch cases can be used to control the flow of logic in the program. Efficient usage of variables and data structures provides an easier solution and a lightweight, low-memory-requiring program. We have to look at the existing programming techniques, such as Divide-and-conquer, Greedy Programming, Dynamic Programming, and find out if they can be used. This problem can be solved by some basic logic or a brute-force approach. Follow the following contents to understand the approach better.

So, if the input of our problem is like n = 3, m = 3, grid =

010100
110110
000100

Then the output will be 6.

Steps

To solve this, we will follow these steps −

ans := 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   for initialize j := 0, when j < 2 * m, update j = j + 2, do:
      if grid[i, j] + grid[i, j + 1] > 0, then:
         (increase ans by 1)
print(ans)

Example

Let us see the following implementation to get better understanding −

#include<bits/stdc++.h>
using namespace std;
void solve(int n, int m, vector<vector<int>> grid) {
   int ans = 0;
   for(int i = 0; i < n; i++) {
      for(int j = 0; j < 2 * m; j = j + 2) {
         if (grid[i][j] + grid[i][j + 1] > 0)
            ans++;
      }
   }
   cout<< ans;
}
int main() {
   int n = 3, m = 3;
   vector<vector<int>> grid = {{0, 1, 0, 1, 0, 0}, {1, 1, 0, 1, 1, 0}, {0, 0, 0, 1, 0, 0}};
   solve(n, m, grid);
   return 0;
}

Input

3, 3, {{0, 1, 0, 1, 0, 0}, {1, 1, 0, 1, 1, 0}, {0, 0, 0, 1, 0, 0}}

Output

6

Updated on: 07-Apr-2022

127 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements