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

C++で異なる偶数を持つサブセットをカウントします


正の整数の配列が与えられます。目標は、各サブセットに個別の偶数が含まれるように、配列内の数値のサブセットを見つけることです。同じ要素を持つすべてのセットは1としてカウントされます。[2,4,6]と[6,2,4]は同じセットです。

例を挙げて理解しましょう

入力 − arr [] ={1,3,5,7,8,3,2};

出力 −明確な偶数を持つサブセットの数は− 3

説明 −サブセットは− [2]、[8]、[2,8]

入力 − arr [] ={2,4,6};

出力 −明確な偶数を持つサブセットの数は− 7

説明 −サブセットは− [2]、[4]、[6]、[2,4]、[2,6]、[4,6]、[2,4,6]

以下のプログラムで使用されているアプローチは次のとおりです

配列内のすべての偶数のセットを作成します。これにより、明確な偶数の数が得られます。数式は2 偶数カウント になります -1

  • 数字の配列を取りますarr[]。

  • Functionsubset_even(int arr []、int size)は数値の配列を受け取り、異なる偶数のサブセットを返します。

  • 初期カウントを0とします。

  • 偶数のunordered_setun_setを作成します。

  • forループを使用してarr[]をトラバースします。 i=0からi

  • arr [i]%2 ==0の場合、それは偶数です。 un_setに挿入します。

  • count =un_set.size()//異なる偶数を取ります。

  • count =pow(2、count)-1を更新します。

  • 結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int subset_even(int arr[], int size){
   int count = 0;
   unordered_set<int> un_set;
   for(int i=0; i<size; i++){
      if (arr[i] % 2 == 0){
         un_set.insert(arr[i]);
      }
   }
   unordered_set<int>:: iterator i;
   count = un_set.size();
   count = pow(2, count) - 1;
   return count;
}
int main(){
   int arr[] = {10, 4, 21, 3, 5, 7, 6, 8};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of subsets having distinct even numbers are: "<<subset_even(arr, size);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of subsets having distinct even numbers are: 15

  1. C ++のソートされた配列の絶対的な個別のカウント?

    配列は、同じデータ型の要素のコレクションです。 ソートされた配列 は、昇順または降順の順序で要素が格納されている配列です。 明確な数は、同じではない要素の数です。 絶対個別カウントは、要素の絶対値、つまり符号のない要素(符号なしの値)の個別カウントです。 このプログラムでは、ソートされた配列で絶対的な個別のカウントを見つけます。つまり、配列の各要素の絶対値を考慮した場合、個別の値の数をカウントします。 たとえば、 Input : [-3 , 0 , 3 , 6 ] Output : 3 配列には3つの異なる絶対値があり、要素は0、3、および6です。 これを解決するために、さまざまな

  2. C++の両側に同じ数の偶数または奇数の配列インデックス

    ここでは、1つの配列が与えられたと仮定して、1つの問題が発生します。 n個の要素があります。左側の偶数の頻度と右側の偶数の頻度が同じであるか、左側の奇数の頻度が右側の奇数の頻度と同じである1つのインデックスを見つける必要があります。そのような結果がない場合は、-1を返します。 配列が{4、3、2、1、2、4}のようであると仮定します。出力は2です。インデックス2の要素は2で、左側に奇数が1つだけあり、右側に奇数が1つだけあります。 この問題を解決するために、左右の情報を格納するためのペアの2つのベクトルを作成します。左側のベクトルは左側の奇数と偶数の頻度を格納し、右側のベクトルは右側でも同