C++程序:查找工作组件的数量
假设有一个电子控制板,它显示系统中所有组件的状态。每个组件的状态都用两个LED灯表示;如果其中任何一个亮着,则该组件正在工作。该板上,有n行LED灯,每行有m个组件状态;这意味着每行有2*m个LED灯。“grid”数组表示电路板的状态,如果灯亮则为'1',否则为'0'。我们必须根据给定的电路板状态找出当前正在工作的组件数量。
问题类别
编程中的各种问题可以通过不同的技术来解决。为了解决问题,我们首先必须设计一个算法,为此我们必须详细研究特定问题。如果同一个问题反复出现,则可以使用递归方法;或者,我们也可以使用迭代结构。可以使用if-else和switch语句等控制语句来控制程序中逻辑的流程。高效地使用变量和数据结构可以提供更简单的解决方案以及轻量级、低内存需求的程序。我们必须查看现有的编程技术,例如分治法、贪心算法、动态规划,并确定是否可以使用它们。这个问题可以通过一些基本的逻辑或暴力方法来解决。请阅读以下内容以更好地理解这种方法。
因此,如果我们问题的输入类似于n = 3,m = 3,grid =
0 | 1 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 0 |
那么输出将是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
广告