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

सी ++ में आसन्न तत्वों पर विचार किए बिना सरणी में अधिकतम सेट बिट योग

इस समस्या में, हमें पूर्णांकों की एक सरणी गिरफ्तारी [] दी जाती है। हमारा कार्य C++ में आसन्न तत्वों पर विचार किए बिना सरणी में अधिकतम सेट बिट राशि की गणना करने के लिए एक प्रोग्राम बनाना है।

समस्या का विवरण - यहाँ, हमारे पास एक ऐरे arr[] है। हमें प्रत्येक संख्या के लिए सेट बिट्स की संख्या ज्ञात करनी है। फिर, हम सरणी के आसन्न तत्वों में अधिकतम सेट बिट योग पाएंगे। यानी a[i] + a[i+2]….

. के लिए अधिकतम राशि

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

इनपुट

arr[] = {1, 4, 6, 7}

आउटपुट

4

स्पष्टीकरण

तत्व के बाइनरी रूप में सरणी

arr[] = {01, 100, 101, 111}
Bit count array = {1, 1, 2, 3}

वैकल्पिक बिट गणना,

arr[0] + arr[2] = 1 + 2 = 3
arr[1] + arr[3] = 1 + 3 = 4

अधिकतम योग =4.

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए, हम बस संख्या में सेट बिट्स की संख्या पाएंगे। और वह वैकल्पिक जोड़ी खोजें जिसमें सेट बिट्स की अधिकतम संख्या हो।

अधिकतम योग 0 से शुरू होने वाली या 1 से शुरू होने वाली सरणी के लिए होगा। इसलिए, हमें उनमें से दो के मामले की जांच करने की आवश्यकता है।

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

उदाहरण

#include<iostream>
using namespace std;
int countSetBit(int n){
   int setBits = 0;
   while(n) {
      setBits++;
      n = n & (n - 1);
   }
   return setBits;
}
int findMaxBitAltSubArray(int arr[], int n){
   int EvenSum = countSetBit(arr[0]);
   int OddSum = 0;
   for (int i = 1; i < n; i++){
      if(i % 2 == 0){
         EvenSum += countSetBit(arr[i]);
      } else {
         OddSum += countSetBit(arr[i]);
      }
   }
   if(EvenSum >= OddSum){
      return EvenSum;
   }
   return OddSum;
}
int main() {
   int arr[] = {1, 4, 6, 7};
   int n = 4;
   cout<<"The maximum set bit sum in the array without considering adjacent elements is "<<findMaxBitAltSubArray(arr, n);
   return 0;
}

आउटपुट

The maximum set bit sum in the array without considering adjacent elements
is 4

  1. सर्कुलर सरणी में अधिकतम योग जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं

    इस समस्या में, हमें एक वृत्ताकार सरणी cirArr[] दी गई है। हमारा काम सर्कुलर सरणी में अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं। समस्या का विवरण वृत्ताकार सरणी के लिए, हमें सरणी के तत्वों का अधिकतम योग ज्ञात करना होगा जैसे कि आसन्न तत्वों को नहीं लि

  1. सी ++ में बार-बार घटाव के साथ सभी तत्वों को समान बनाने के बाद अधिकतम सरणी योग पाएं

    मान लीजिए कि हमारे पास n तत्वों की एक सरणी है। सभी तत्वों का अधिकतम संभव योग इस प्रकार ज्ञात कीजिए कि सभी तत्व समान हों। केवल संचालन जिसकी अनुमति है वह है किन्हीं दो तत्वों को चुनना और उनमें से बड़े को दो के पूर्ण अंतर से बदलना। मान लीजिए कि तत्व [9, 12, 3, 6] जैसे हैं। फिर आउटपुट 12 होगा। तो पहले ए

  1. सी ++ में एक सम ऐरे पहेली?

    यहां हम सरणी से संबंधित एक दिलचस्प समस्या देखेंगे। n तत्वों के साथ एक सरणी है। हमें n तत्वों की एक और सरणी बनानी है। लेकिन दूसरी सरणी की i-वें स्थिति i-वें तत्व को छोड़कर पहले सरणी के सभी तत्वों का योग धारण करेगी। और एक बाधा यह है कि हम इस समस्या में घटाव ऑपरेटर का उपयोग नहीं कर सकते हैं। यदि हम घट