इस समस्या में, हमें पूर्णांकों की एक सरणी दी जाती है। हमारा काम एक सरणी के सभी ट्रिपल के बीच XOR का अधिकतम मान बनाना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट - सरणी ={5, 6, 1, 2}
आउटपुट -6
स्पष्टीकरण -
All triplets are: 5^6^1 = 2 5^6^2 = 1 5^1^2 = 6 6^1^2 = 5
इस समस्या को हल करने के लिए, सभी संभावित ट्रिपल के एक्सओआर को खोजने के लिए एक सीधा तरीका होगा और अधिकतम सभी ट्रिपल को प्रिंट करना होगा। यह प्रभावी नहीं होगा यदि हम सरणी में बड़ी संख्या में तत्वों के साथ एक सरणी के साथ काम करते हैं।
अधिकतम XOR ज्ञात करने के लिए, हम पहले एक सेट बनाएंगे जिसमें सभी युग्मों के तत्वों का XOR होगा। फिर हम सभी जोड़ियों और तत्वों के बीच XOR पाएंगे और अधिकतम XOR का पता लगाएंगे।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,
#include <bits/stdc++.h> using namespace std; int MaxTripletXor(int n, int a[]){ set<int> XORpair; for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { XORpair.insert(a[i] ^ a[j]); } } int maxXOR = 0; for (auto i : XORpair) { for (int j = 0; j < n; j++) { maxXOR = max(maxXOR, i ^ a[j]); } } return maxXOR; } int main(){ int matrix[] = {1, 2, 3, 5, 7}; int n = sizeof(matrix) / sizeof(matrix[0]); cout<<"The maximum XOR sum triplets is "<<MaxTripletXor(n, matrix); return 0; }
आउटपुट
The maximum XOR sum triplets is 7