C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

すべての電球をオンにできるかどうかを確認するためのC++コード


数mと、n個のサブリストを持つネストされたリストAがあるとします。 m個の球根があると考えてください。最初はすべてがオフになっています。 n個のボタンがあり、それぞれがいくつかのバルブのセットに接続されています。つまり、A [i]は、i番目のスイッチを押すことでオンにできる電球のセットです。すべての電球を点灯できるかどうかを確認する必要があります。

したがって、入力がA =[[1、4]、[1、3、1]、[2]]のような場合; m =4の場合、すべてのスイッチを押すことで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

  1. ツリーがC++で同形であるかどうかを確認します

    二分木では、各ノードに2つの子、つまり左の子と右の子が含まれます。 2つの二分木があり、タスクは、ツリーの1つが、別のツリーを左にひっくり返すことによって取得できるかどうかを確認することであると仮定します。 左側にある他のツリーを反転して取得できる場合、ツリーは同型です。 例 入力-1 出力: 同形 説明: 与えられたTree-2は、左側のTree-1を反転することで取得できるため、Treeは同型です。 この問題を解決するためのアプローチ この特定の問題を解決するための再帰的なアプローチは、ブール関数が両方のツリーのルートノードをチェックすることです。両方のツリーの

  2. 番号がC++でクリシュナムルシー番号であるかどうかを確認します

    ここでは、クリシュナムルティ番号かどうかを確認する方法を説明します。各桁の階乗の合計が数値と同じである場合、数値はクリシュナムルティ数です。たとえば、数値が145の場合、sum =1! + 4! + 5! =1 + 24 + 120 =145。つまり、これはクリシュナムルティの数です。 論理は単純で、各数の階乗を見つけて合計を見つける必要があります。それが与えられた数と同じである場合、その数はクリシュナムルティ数です。より良いアイデアを得るためにコードを見てみましょう。 例 #include <iostream> #include <cmath>> using