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

सी++ में सरणी के एक्सओआर को शून्य बनाने के लिए न्यूनतम संचालन

समस्या कथन

हमें n तत्वों की एक सरणी दी गई है। कार्य संपूर्ण सरणी 0 का XOR बनाना है। इसे प्राप्त करने के लिए हम निम्नलिखित कार्य कर सकते हैं।

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

  • तत्व का चयन करने के बाद, हम इसे 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 का गुणज बनाने के लिए न्यूनतम संचालन

    मान लीजिए कि हमारे पास एक सरणी गिरफ्तारी और दूसरा मान k है। हमें सरणी के GCD को k के गुणज के बराबर बनाने के लिए न्यूनतम संख्या में संक्रियाओं का पता लगाना होगा। इस मामले में, ऑपरेशन मूल्य में वृद्धि या कमी कर रहा है। मान लीजिए कि सरणी {4, 5, 6} की तरह है, और k 5 है। हम 4 को 1 से बढ़ा सकते हैं और 6 क

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

    इस खंड में हम एक और दिलचस्प समस्या देखेंगे। मान लीजिए कि हमारे पास एन तत्वों की एक सरणी है। इस सरणी को सह-अभाज्य सरणी बनाने के लिए हमें न्यूनतम संख्या में प्रतिच्छेदन बिंदु खोजने होंगे। को-प्राइम एरे में हर दो लगातार एलीमेंट का gcd 1 होता है। हमें ऐरे को भी प्रिंट करना होता है। मान लीजिए हमारे पास

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

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