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

सी ++ में एक सरणी में अधिकतम बिटवाइज़ और एक जोड़ी का मूल्य

समस्या कथन

n सकारात्मक तत्वों की एक सरणी को देखते हुए। हमें सरणी से किसी भी तत्व के जोड़े द्वारा उत्पन्न अधिकतम बिटवाइज़ और मान खोजने की आवश्यकता है।

उदाहरण

यदि इनपुट ऐरे {10, 12, 15, 18} है तो बिटवाइज़ का अधिकतम मान और 12 है।

एल्गोरिदम

बिटवाइज़ और सिंगल बिट पर संचालन का परिणाम अधिकतम होता है जब दोनों बिट 1 होते हैं। इस संपत्ति को ध्यान में रखते हुए -

  • एमएसबी से शुरू करें और जांचें कि क्या हमारे पास सेट वैल्यू वाले ऐरे के कम से कम दो एलिमेंट हैं या नहीं
  • यदि हाँ, तो वह MSB हमारे समाधान का हिस्सा होगा और परिणाम में जोड़ा जाएगा अन्यथा हम उस बिट को छोड़ देंगे
  • इसी तरह, बिट स्थिति के लिए MSB से LSB (32 से 1) तक पुनरावृति करके हम आसानी से जांच सकते हैं कि कौन सा बिट हमारे समाधान का हिस्सा होगा और ऐसे सभी बिट्स को हमारे समाधान में जोड़ते रहेंगे

उदाहरण

आइए अब एक उदाहरण देखें -

#include <bits/stdc++.h>
using namespace std;
int checkBits(int *arr, int n, int pattern) {
   int cnt = 0;
   for (int i = 0; i < n; ++i) {
      if ((pattern & arr[i]) == pattern) {
         ++cnt;
      }
   }
   return cnt;
}
int getMaxBitwiseAnd(int *arr, int n) {
   int result = 0;
   int count;
   for (int i = 31; i >= 0; --i) {
      count = checkBits(arr, n, result | (1 << i));
      if (count >= 2) {
         result |= (1 << i);
      }
   }
   return result;
}
int main() {
   int arr[] = {10, 12, 15, 18};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << "Maximum bitwise AND = " << getMaxBitwiseAnd(arr, n) << endl;
   return 0;
}

आउटपुट

Maximum bitwise AND = 12

  1. सी ++ में किसी सरणी के प्रत्येक सबसेट के तत्वों के बीच न्यूनतम मान

    समस्या कथन पूर्णांकों की एक सरणी को देखते हुए, कार्य सरणी के प्रत्येक सबसेट के सभी तत्वों के AND को खोजना और उन सभी के बीच न्यूनतम और मान को प्रिंट करना है। उदाहरण If arr[] = {1, 2, 3, 4, 5} then (1 & 2) = 0 (1 & 3) = 1 (1 & 4) = 0 (1 & 5) = 1 (2 & 3) = 2 (2 & 4) = 0 (2 &

  1. |ai + aj – k| . का न्यूनतम संभव मान C++ में दिए गए सरणी और k के लिए

    समस्या कथन आपको n पूर्णांक और एक पूर्णांक K की एक सरणी दी गई है। कुल असंगठित युग्मों की संख्या ज्ञात कीजिए {i, j} जैसे कि |ai + aj – k| का निरपेक्ष मान। न्यूनतम संभव है जहां मैं !=j. उदाहरण अगर arr[ ] ={0, 4, 6, 2, 4} और k =7 तो हम निम्न 5 जोड़े बना सकते हैं जिनका न्यूनतम मान 1 है {0, 6}, {4, 2},

  1. सी++ में एक सरणी में अधिकतम जीसीडी के साथ जोड़ी खोजें

    मान लीजिए कि हमारे पास सकारात्मक पूर्णांकों की एक सरणी है। हमारा काम सरणी से पूर्णांकों की जोड़ी को खोजना है, जहां GCD मान अधिकतम है। मान लीजिए A ={1, 2, 3, 4, 5}, तो आउटपुट 2 है। जोड़ी (2, 4) में GCD 2 है, अन्य GCD मान 2 से कम हैं। इस समस्या को हल करने के लिए, हम प्रत्येक तत्व के भाजक की गिनती को