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

C++ में समान संख्या में सेट बिट्स के साथ सन्निहित सरणी तत्वों की अधिकतम संख्या

हमें पूर्णांक तत्वों की एक क्रमबद्ध सरणी के साथ दिया गया है और कार्य दो प्रमुख चीजों की गणना करना है यानी

  • समान संख्या में सेट बिट्स वाले तत्व
  • साथ ही, समान सेट बिट वाले तत्वों को प्रकृति में सन्निहित होना चाहिए।

इनपुट

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

  1. जांचें कि किसी संख्या में सी ++ में सेट और अनसेट बिट्स की संख्या समान है या नहीं

    इस खंड में हम जांच करेंगे कि किसी संख्या में सेट बिट्स और अनसेट बिट्स की संख्या समान है या नहीं। मान लीजिए कि संख्या 12 है। इसका द्विआधारी प्रतिनिधित्व 1100 है। इसमें 0 और 1 की संख्या समान है। दृष्टिकोण सरल है। हम संख्या के प्रत्येक बिट की जाँच करेंगे, और यदि वह 1 है, तो set_bit_count बढ़ाएँ, और यद

  1. सी ++ में सेट बिट्स की गिनती के अनुसार एक सरणी को क्रमबद्ध करें

    यहां हम सेट-बिट्स के आधार पर एक सरणी को सॉर्ट करने के लिए एक दिलचस्प समस्या देखेंगे। जब सरणी में एक तत्व में सेट-बिट्स की संख्या अधिक होती है, तो उसे दूसरे तत्व से पहले रखा जाएगा जिसमें सेट बिट्स की संख्या कम होती है। मान लीजिए कुछ संख्याएं 12, 15, 7 हैं। तो सेट बिट्स मूल रूप से उनके द्विआधारी प्रति

  1. C++ में k सेट बिट्स के साथ किसी संख्या को अधिकतम करने के लिए आवश्यक न्यूनतम फ़्लिप।

    समस्या कथन दो नंबर n और k को देखते हुए, हमें दी गई संख्या को अधिकतम करने के लिए आवश्यक फ़्लिप की न्यूनतम संख्या को इसके बिट्स को फ़्लिप करके खोजने की आवश्यकता है जैसे कि परिणामी संख्या में k सेट बिट्स हों। कृपया ध्यान दें कि इनपुट को इस शर्त को पूरा करना चाहिए कि k