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

C++で特定のセットのすべての個別のサブセットを検索します


ここでは、特定のセットのすべての個別のサブセットを表示する方法を説明します。したがって、セットが{1、2、3}の場合、サブセットは{}、{1}、{2}、{3}、{1、2}、{2、3}、{1、3}になります。 、{1、2、3}。すべてのサブセットのセットは、べき集合と呼ばれます。べき集合には2n個の要素があります。

0から2n(を除く)をループし、各反復で、現在のカウンターのi番目のビットが設定されているかどうかを確認してから、i番目の要素を出力します。

#include<iostream>
#include<cmath>
using namespace std;
void showPowerSet(char *set, int set_length) {
   unsigned int size = pow(2, set_length);
   for(int counter = 0; counter < size; counter++) {
      cout << "{";
      for(int j = 0; j < size; j++) {
         if(counter & (1<<j))
            cout << set[j] << " ";
         }
         cout << "}" << endl;
      }
   }
   int main() {
   char set[] = {'a','b','c'};
   showPowerSet(set, 3);
}

出力

{}
{a }
{b }
{a b }
{c }
{a c }
{b c }
{a b c }

  1. 無向グラフにC++で指定されたサイズの独立集合が含まれているかどうかを確認します

    コンセプト 与えられた無向グラフに関して、サイズlの独立集合が含まれているかどうかを確認します。サイズlの独立集合が存在する場合は「はい」と印刷し、そうでない場合は「いいえ」と印刷します。グラフの独立集合は、互いに直接接続されていない頂点の集合として定義されることに注意してください。 入力 L = 4, graph = [[1, 0, 1, 0, 0], [0, 1, 1, 0, 0],[1, 1, 1, 1, 1], [0, 0, 1, 1, 0],[0, 0, 1, 0, 1]]; 出力 Yes 上のグラフには、サイズ4の独立したセットが含まれています(頂点0、1、3、4は互いに

  2. C++の特定のセットに存在するすべてのノードから到達可能なすべてのノードを検索します

    1つの無向グラフと一連の頂点があるとします。与えられたセットに存在するすべての頂点から到達可能なすべてのノードを見つける必要があります。 したがって、入力が次のような場合 この場合、出力は[1,2,3]と[4,5]になります。これは、これらが2つの連結成分であるためです。 これを解決するには、次の手順に従います- ノード:=グラフ内のノードの数 訪問したサイズの配列を定義します:nodes+1。そして0で埋める 1つのマップを定義するm comp_sum:=0 iを初期化する場合:=0、i