Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में सभी संभावित उपसमुच्चय के XOR का योग

इस समस्या में, हमें n संख्याओं का एक सरणी aar[] दिया जाता है। हमारा काम सभी संभावित सबसेट के एक्सओआर का योग खोजने के लिए एक प्रोग्राम बनाना है।

यहां, हम सरणी के सभी सबसेट पाएंगे। फिर प्रत्येक उपसमुच्चय के लिए, हम उपसमुच्चय के तत्वों का XOR खोजेंगे और उन्हें योग चर में जोड़ देंगे।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

Input: arr[] = {5, 1, 4}
Output: 20
Explanation: XOR of all subsets:
{5} = 5
{1} = 1
{4} = 4
{5, 1} = 4
{5, 4} = 1
{1, 4} = 5
{5, 1, 4} = 0
Sum of XOR = 5 + 1 + 4 + 4 + 1 + 5 = 20

समस्या का एक सरल समाधान है, लूप का उपयोग करना और सरणी के सभी संभावित उपसमुच्चय को ढूंढना और फिर प्रत्येक उपसमुच्चय के लिए सभी तत्वों का XOR खोजना और योग को अद्यतन करना। अंत में योग लौटाएं।

यह एक प्रभावी तरीका नहीं है, बड़े मूल्य के लिए, समय जटिलता तेजी से बढ़ेगी।

एक कुशल दृष्टिकोण XOR के गुणों का उपयोग कर रहा है। यहां, हम सरणी के सभी तत्वों में से OR पाएंगे और बिट्स की जांच करेंगे। यदि ith सेट है, तो योग को (2^(n-1+i)) से अपडेट करें।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,

#include <iostream>
#include <math.h>
using namespace std;
int subSetXORSum(int arr[], int n) {
   int bitOR = 0;
   for (int i=0; i < n; ++i)
   bitOR |= arr[i];
   return (bitOR * pow(2, n-1));
}
int main() {
   int arr[] = {1, 5, 4};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Sum of XOR of all possible subsets is "<<subSetXORSum(arr, size);
}

आउटपुट

Sum of XOR of all possible subsets is 20

  1. C++ में सभी संभावित पूर्ण बाइनरी ट्री

    मान लीजिए कि एक पूर्ण बाइनरी ट्री एक बाइनरी ट्री है जहां प्रत्येक नोड में ठीक 0 या 2 बच्चे होते हैं। तो हमें एन नोड्स के साथ सभी संभावित पूर्ण बाइनरी पेड़ों की एक सूची मिलनी है। उत्तर में प्रत्येक पेड़ के प्रत्येक नोड में node.val =0 होना चाहिए। लौटाए गए पेड़ किसी भी क्रम में हो सकते हैं। तो अगर इनप

  1. सी ++ में सरणी के सभी तत्वों पर एक्सओआर ऑपरेशन लागू करके सरणी योग को कम करना

    विवरण आकार की एक सरणी को देखते हुए, एन। एक तत्व एक्स खोजें जैसे कि सरणी तत्वों का योग न्यूनतम होना चाहिए जब एक्सओआर ऑपरेशन एक्स और सरणी के प्रत्येक तत्व के साथ किया जाता है। If input array is: arr [] = {8, 5, 7, 6, 9} then minimum sum will be 30 Binary representation of array elments are: 8 : 1000

  1. सी ++ प्रोग्राम ए, बी, सी, डी, ई . में से सभी संभावित संयोजन उत्पन्न करने के लिए प्रोग्राम

    यह ए, बी, सी, डी, ई से सभी संभावित संयोजन उत्पन्न करने के लिए एक सी ++ प्रोग्राम है। एल्गोरिदम Begin    Take the number of elements and the elements as input.    function Combi(char a[], int reqLen, int s, int currLen, bool check[], int l)    to print the all possible c