इस समस्या में, हमें n X n आकार का एक मैट्रिक्स दिया गया है। हमारा काम एक प्रोग्राम बनाना है जो एक पूर्ण पंक्ति या एक पूर्ण कॉलम के अधिकतम XOR मान की गणना करेगा।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट -
N = 3 mat[N][N] = {{4, 9, 1} {2, 8, 3} {10, 12, 11}}
आउटपुट -
13
स्पष्टीकरण -
Row1: 4^9^1 = 12 Row2: 2^8^3 = 9 Row3: 10^12^11 = 13 Col1: 4^2^10 = 12 Col2: 9^8^12 = 13 Col3: 1^3^11 = 9
यहां, हमने सभी पंक्तियों और स्तंभों के XOR की गणना की है और फिर उनमें से अधिकतम मुद्रित किया गया है।
इस समस्या को हल करने के लिए, हम मैट्रिक्स की सभी पंक्तियों और स्तंभों के XOR की गणना करेंगे और उनमें से अधिकतम का पता लगाएंगे।
पंक्तियों और स्तंभों के XOR को खोजने का एक तरीका मैट्रिक्स को 2 बार पुनरावृत्त करना है, एक स्तंभों के लिए और दूसरा पंक्तियों के लिए।
लेकिन हम वर्ग मैट्रिक्स पर एक पुनरावृत्ति का उपयोग करके ऐसा ही कर सकते हैं। और एक पंक्ति-वार और दूसरा स्तंभ-वार के लिए।
यह उसी पुनरावृत्ति का उपयोग करके मैट्रिक्स [i] [j] का उपयोग करके पंक्ति-वार मैट्रिक्स को ट्रैवर्स करने के लिए किया जा सकता है [j] [i] कॉलम-वार ट्रैवर्सिंग के लिए
उदाहरण
हमारे समाधान को दर्शाने के लिए कार्यक्रम,
#include<iostream> using namespace std; const int MAX = 1000; int maxRCXOR(int mat[][MAX], int N){ int rowXOR, colXOR; int maxXOR = 0; for (int i = 0 ; i < N ; i++){ rowXOR = 0, colXOR = 0; for (int j = 0 ; j < N ; j++){ rowXOR = rowXOR^mat[i][j]; colXOR = colXOR^mat[j][i]; } if (maxXOR < max(rowXOR, colXOR)) maxXOR = max(rowXOR, colXOR); } return maxXOR; } int main() { int N = 3; int matrix[][MAX]= { {4, 9, 1}, {2, 8, 3}, {10, 12, 11} }; cout<<"Maximum XOR of all row XOR and Column XOR is "<<maxRCXOR(matrix,N); return 0; }
आउटपुट
Maximum XOR of all row XOR and Column XOR is 13