计算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(intarr[],intsize)接受数字数组,并返回具有不同偶数的子集。
将初始计数设为0。
为偶数创建unordered_set<int>未设置。
使用for循环遍历arr[]。从i=0到i<length。
如果arr[i]%2==0,则为偶数。插入至未设置。
取count=un_set.size()//不重复的偶数。
更新计数=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