C++ 程式碼以檢查全部燈泡是否可以被開啟


假設我們有一個數字 m 和一個包含 n 個子列表的巢狀列表 A。考慮有 m 個燈泡,最初它們全部關閉。有 n 個按鈕,每個按鈕都連線到一些燈泡。所以 A[i] 是一組燈泡,可以透過按下第 i 個開關開啟。我們必須檢查我們是否可以點亮所有燈泡。

所以,如果輸入像 A = [[1, 4], [1, 3, 1], [2]];m = 4,則輸出將為 True,因為透過按下所有開關,我們可以點亮全部四個燈泡。

步驟

為了解決這個問題,我們將遵循這些步驟 −

Define one set s
for initialize i := 0, when i < size of A, update (increase i by 1), do:
   for initialize j := 0, when j < size of A[i], update (increase j by 1), do:
      insert A[i, j] into s
if size of s is same as m, then:
   return true
Otherwise
   return false

示例

讓我們看看以下實現以獲得更好的理解 −

#include <bits/stdc++.h>
using namespace std;
bool solve(vector<vector<int>> A, int m){
   set<int> s;
   for (int i = 0; i < A.size(); i++){
      for (int j = 0; j < A[i].size(); j++){
         s.insert(A[i][j]);
      }
   }
   if (s.size() == m)
      return true;
   else
      return false;
}
int main(){
   vector<vector<int>> A = { { 1, 4 }, { 1, 3, 1 }, { 2 } };
   int m = 4;
   cout <<solve(A, m) << endl;
}

輸入

{ { 1, 4 }, { 1, 3, 1 }, { 2 } }, 4

輸出

1

更新於:15-Mar-2022

283 瀏覽

開啟您的 職業生涯

完成課程進行認證

開始
廣告
© . All rights reserved.