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

C++ में ऐरे के XOR को शून्य बनाने के लिए न्यूनतम ऑपरेशन्स


समस्या विवरण

हमें n एलिमेंट्स का एक ऐरे दिया गया है। कार्य पूरे ऐरे का XOR 0 बनाना है। हम इसे प्राप्त करने के लिए निम्नलिखित कर सकते हैं।

हम किसी एक एलिमेंट का चयन कर सकते हैं -

  • एलिमेंट का चयन करने के बाद, हम इसे 1 से बढ़ा या घटा सकते हैं।
  • हमें चयनित एलिमेंट के लिए पूरे ऐरे के XOR योग को शून्य बनाने के लिए आवश्यक न्यूनतम इन्क्रीमेंट/डिक्रीमेंट ऑपरेशन्स की संख्या ढूंढनी होगी।

उदाहरण

यदि arr[] = {2, 4, 7} तो 1 ऑपरेशन आवश्यक है -

  • एलिमेंट 2 का चयन करें
  • इसे 1 से घटाएं
  • अब ऐरे {3, 4, 7} बन जाता है और इसका XOR 0 है

एल्गोरिदम

  • पूरे ऐरे का XOR ढूंढें
  • अब, मान लें कि हमने एलिमेंट arr[i] चुना है, तो उस एलिमेंट के लिए आवश्यक लागत निरपेक्ष(arr[i] - (XORsum ^ arr[i])) होगी
  • प्रत्येक एलिमेंट के लिए इन निरपेक्ष मानों का न्यूनतम निकालना हमारा न्यूनतम आवश्यक ऑपरेशन होगा

उदाहरण

#include <iostream> 
#include <climits> 
#include <cmath> 
using namespace std; 

void getMinCost(int *arr, int n) { 
    int operations = INT_MAX; 
    int elem; 
    int xorValue = 0; 
    for (int i = 0; i < n; ++i) { 
        xorValue = xorValue ^ arr[i]; 
    } 
    for (int i = 0; i < n; ++i) { 
        if (operations > abs((xorValue ^ arr[i]) - arr[i])) { 
            operations = abs((xorValue ^ arr[i]) - arr[i]); 
            elem = arr[i]; 
        } 
    } 
    cout << "Element= " << elem << endl; 
    cout << "Minimum required operations = " << abs(operations) << endl; 
} 

int main() { 
    int arr[] = {2, 4, 7}; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    getMinCost(arr, n); 
    return 0; 
}

आउटपुट

जब आप उपरोक्त प्रोग्राम को कंपाइल और एक्जीक्यूट करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है:

Element = 2 
Minimum required operations = 1

  1. - C++ में सरणी के GCD को k का गुणक बनाने के लिए न्यूनतम ऑपरेशन

    मान लीजिए हमारे पास एक सरणी arr और एक अन्य मान k है। हमें सरणी के GCD को k का गुणक बनाने के लिए न्यूनतम ऑपरेशंस की संख्या ढूंढनी है। यहां ऑपरेशन मान को बढ़ाना या घटाना है। मान लीजिए सरणी {4, 5, 6} है, और k 5 है। हम 4 को 1 से बढ़ा सकते हैं, और 6 को 1 से घटा सकते हैं, तो यह 5 बन जाता है। यहां ऑपरेशंस

  1. - C++ में को-प्राइम ऐरे बनाने के लिए न्यूनतम इंसर्शन

    इस सेक्शन में हम एक और दिलचस्प समस्या देखेंगे। मान लीजिए हमारे पास N एलिमेंट्स का एक ऐरे है। हमें इस ऐरे को को-प्राइम ऐरे बनाने के लिए न्यूनतम इंटरसेक्शन पॉइंट्स ढूंढने हैं। को-प्राइम ऐरे में हर दो लगातार एलिमेंट्स का gcd 1 होता है। हमें ऐरे भी प्रिंट करना है।मान लीजिए हमारे पास {5, 10, 20} जैसे एलि

  1. - C++ में ऐरे के सभी एलिमेंट्स को समान बनाने के लिए न्यूनतम डिलीट ऑपरेशन्स

    समस्या कथनn एलिमेंट्स का एक ऐरे दिया गया है जैसे कि एलिमेंट्स रिपीट हो सकते हैं। हम ऐरे से किसी भी संख्या में एलिमेंट्स डिलीट कर सकते हैं। कार्य ऐरे को समान बनाने के लिए डिलीट किए जाने वाले एलिमेंट्स की न्यूनतम संख्या ढूंढना है।arr[] = {10, 8, 10, 7, 10, -1, -4, 12}सभी ऐरे एलिमेंट्स को समान बनाने के