C++程序:查找工作组件的数量


假设有一个电子控制板,它显示系统中所有组件的状态。每个组件的状态都用两个LED灯表示;如果其中任何一个亮着,则该组件正在工作。该板上,有n行LED灯,每行有m个组件状态;这意味着每行有2*m个LED灯。“grid”数组表示电路板的状态,如果灯亮则为'1',否则为'0'。我们必须根据给定的电路板状态找出当前正在工作的组件数量。

问题类别

编程中的各种问题可以通过不同的技术来解决。为了解决问题,我们首先必须设计一个算法,为此我们必须详细研究特定问题。如果同一个问题反复出现,则可以使用递归方法;或者,我们也可以使用迭代结构。可以使用if-else和switch语句等控制语句来控制程序中逻辑的流程。高效地使用变量和数据结构可以提供更简单的解决方案以及轻量级、低内存需求的程序。我们必须查看现有的编程技术,例如分治法、贪心算法、动态规划,并确定是否可以使用它们。这个问题可以通过一些基本的逻辑或暴力方法来解决。请阅读以下内容以更好地理解这种方法。

因此,如果我们问题的输入类似于n = 3,m = 3,grid =

010100
110110
000100

那么输出将是6。

步骤

为了解决这个问题,我们将遵循以下步骤:

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)

示例

让我们来看下面的实现,以便更好地理解:

#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;
}

输入

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

输出

6

更新于:2022年4月7日

浏览量:177

开启你的职业生涯

完成课程获得认证

开始学习
广告