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

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.