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

C++ में ऐरे के बिटवाइज OR को अधिकतम करना


समस्या कथन

N पूर्णांकों का एक ऐरे दिया गया है। ऐरे के सभी तत्वों के बिटवाइज OR को एक कार्य करके अधिकतम करना है। कार्य ऐरे के किसी भी तत्व को अधिकतम k बार दिए गए पूर्णांक x से गुणा करना है।

यदि इनपुट ऐरे है {4, 3, 6, 1}, k = 2 और x = 3 तो प्राप्त किया जा सकने वाला अधिकतम मान 55 है।

एल्गोरिदम

1. एक ऐरे तत्व को (x^k) से गुणा करें और इसे पिछले सभी तत्वों के बिटवाइज OR के साथ बिटवाइज OR करें।
2. एक ऐरे तत्व को सभी अगले तत्वों के बिटवाइज OR से गुणा करें।
3. सभी पुनरावृत्तियों के बाद अधिकतम मान वापस करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;

int getMaxOr(int* arr, int n, int k, int x) {
    int prefixSum[n + 1];
    int suffixSum[n + 1];
    int power = 1;
    for (int i = 0; i < k; ++i) {
        power = power * x;
    }
    prefixSum[0] = 0;
    for (int i = 0; i < n; ++i) {
        prefixSum[i + 1] = prefixSum[i] | arr[i];
    }
    suffixSum[n] = 0;
    for (int i = n - 1; i >= 0; --i) {
        suffixSum[i] = suffixSum[i + 1] | arr[i];
    }
    int result = INT_MIN;
    for (int i = 0; i < n; ++i) {
        result = max(result, prefixSum[i] | (arr[i] * power) | suffixSum[i + 1]);
    }
    return result;
}

int main() {
    int arr[] = {4, 3, 6, 1};
    int n = sizeof(arr) / sizeof(arr[0]);
    int k = 2;
    int x = 3;
    cout << "Result = " << getMaxOr(arr, n, k, x) << endl;
    return 0;
}

आउटपुट

Result = 55
  1. - C++ में दिए गए नंबर तक ऐरे तत्वों को अधिकतम करना

    समस्या कथन पूर्णांकों का एक ऐरे, एक संख्या और एक अधिकतम मान दिया गया है, कार्य ऐरे तत्वों से प्राप्त किए जा सकने वाले अधिकतम मान की गणना करना है। शुरुआत से ऐरे को पार करते समय हर मान को पिछले इंडेक्स से प्राप्त परिणाम में या तो जोड़ा जा सकता है या घटाया जा सकता है जैसे कि किसी भी बिंदु पर परिणाम 0

  1. - C++ में सरणी रिवर्स

    यह आलेख C++ कोडिंग का उपयोग करके एक सरणी को अवरोही क्रम में रिवर्स दिखाता है जिसमें उच्चतम इंडेक्स को निम्नतम इंडेक्स से परिणामस्वरूप लूप में सरणी को पार करके स्वैप किया जाता है।उदाहरण#include <iostream> #include <algorithm> using namespace std; void reverseArray(int arr[], int n){  

  1. - C++ में सरणी में एक संख्या की फ्रीक्वेंसी ज्ञात करना

    मान लीजिए हमारे पास एक सरणी है। इसमें n अलग-अलग तत्व हैं। हमें सरणी में एक तत्व की फ्रीक्वेंसी जांचनी है। मान लीजिए A = [5, 12, 26, 5, 3, 4, 15, 5, 8, 4], यदि हम 5 की फ्रीक्वेंसी ढूंढने की कोशिश करते हैं, तो यह 3 होगी। इसे हल करने के लिए, हम सरणी को बाएं से स्कैन करेंगे, यदि तत्व दी गई संख्या के सम