हमें पूर्णांक तत्वों की एक क्रमबद्ध सरणी के साथ दिया गया है और कार्य दो प्रमुख चीजों की गणना करना है यानी
- समान संख्या में सेट बिट्स वाले तत्व
- साथ ही, समान सेट बिट वाले तत्वों को प्रकृति में सन्निहित होना चाहिए।
इनपुट
int arr[] = { 5, 8, 1, 2, 9, 12}
आउटपुट − समान संख्या में सेट बिट्स वाले सन्निहित सरणी तत्वों की अधिकतम संख्या − 3
. हैस्पष्टीकरण - हम एक सरणी के तत्वों के लिए बाइनरी अंकों की गणना करेंगे और उनके सेट बिट्स की गणना करेंगे।
arr[0] = 5 => 0101 => total set bits are -: 2 arr[1] = 8 => 1000 => total set bits are -: 1 arr[2] = 1 => 0001 => total set bits are -: 1 arr[3] = 2 => 0010 => total set bits are -: 1 arr[4] = 9 => 1001 => total set bits are -: 2 Arr[5] = 12 => 1100 => total set bits are -: 2
तो समान संख्या में सेट बिट्स और प्रकृति में सन्निहित तत्व 5, 9 और 12 हैं। सेट बिट्स की समान संख्या वाले सन्निहित सरणी तत्वों की अधिकतम संख्या 3
हैइनपुट - int arr[] ={ 5, 8, 1, 2}
आउटपुट − समान संख्या में सेट बिट्स वाले सन्निहित सरणी तत्वों की अधिकतम संख्या है − 2
स्पष्टीकरण - हम एक सरणी के तत्वों के लिए बाइनरी अंकों की गणना करेंगे और उनके सेट बिट्स की गणना करेंगे।
arr[0] = 5 => 0101 => total set bits are -: 2 arr[1] = 8 => 1000 => total set bits are -: 1 arr[2] = 1 => 0001 => total set bits are -: 1 arr[3] = 2 => 0010 => total set bits are -: 1
तो समान संख्या में सेट बिट्स और प्रकृति में सन्निहित तत्व 1 और 2 हैं। इसलिए समान संख्या में सेट बिट्स वाले सन्निहित सरणी तत्वों की अधिकतम संख्या 2 है
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांक प्रकार के सरणी तत्वों को इनपुट करें
-
आकार फ़ंक्शन का उपयोग करके किसी सरणी के आकार की गणना करें और इसे फ़ंक्शन में पास करें
-
एक अस्थायी चर लें और इसे मान 1 पर सेट करें और मान 1 के साथ अधिकतम चर भी सेट करें।
-
वेक्टर प्रकार का एक चर vec बनाएं
-
लूप को 0 से सरणी के आकार तक प्रारंभ करें
-
"__builtin_popcount(element)" फ़ंक्शन का उपयोग करके सरणी तत्वों के बाइनरी सेट बिट्स की गणना करें जो किसी दिए गए तत्व के सेट बिट्स की कुल संख्या को वापस कर देगा और गिनती को वेक्टर में संग्रहीत करता रहेगा।
-
1 से वेक्टर के आकार तक के लिए लूप प्रारंभ करें
-
सदिश के अंदर, जांचें कि क्या vec[i+1] =vec[i] फिर अस्थायी के मान को 1 से बढ़ा दें
-
अन्यथा, तापमान को 1
. पर सेट करें -
अधिकतम फ़ंक्शन का उपयोग करके अस्थायी और अधिकतम के बीच अधिकतम मान चुनने के साथ अधिकतम सेट करें।
-
अधिकतम चर लौटाएं
-
परिणाम प्रिंट करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; //function to calculate maximum same number of bits int maximum_SameBits(int arr[], int size){ int temp = 1; int maximum = 1; vector<int> vec; for (int i = 0; i < size; i++){ vec.push_back(__builtin_popcount(arr[i])); } for (int i = 1; i < vec.size(); i++){ if (vec[i + 1] == vec[i]){ temp++; } else{ temp = 1; } maximum = max(maximum, temp); } return maximum; } int main(){ int arr[] = { 5, 8, 1, 2, 9, 12}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Maximum number of contiguous array elements with same number of set bits are: "<<maximum_SameBits(arr, size); return 0; }
आउटपुट
Maximum number of contiguous array elements with same number of set bits are: 3