मान लीजिए हमारे पास N x M आकार का एक 2D सरणी है। कार्य यह जांचना है कि क्या हम प्रत्येक पंक्ति से एक संख्या का चयन कर सकते हैं, इस तरह से कि उन तत्वों का XOR गैर-शून्य या 0 से अधिक है। मान लीजिए कि एक मैट्रिक्स है इस तरह -
7 | 7 | 7 |
10 | 10 | 7 |
यदि हम XOR करते हैं, तो उत्तर शून्य नहीं होगा, क्योंकि दो पंक्तियों के अंतिम तत्वों को छोड़कर 7 और 10 हैं
इस समस्या को हल करने के लिए समाधान बहुत आसान होगा। प्रारंभ में जांचें कि प्रत्येक पंक्ति के पहले कॉलम के तत्वों का XOR 0 है या नहीं। यदि यह शून्य नहीं है तो यह संभव है। अन्यथा, जांचें कि क्या किसी पंक्ति में दो या दो से अधिक विशिष्ट तत्व हैं या नहीं, यदि हाँ तो यह भी संभव है। यदि उपरोक्त दोनों शर्तें संतुष्ट नहीं हैं, तो यह संभव नहीं है।
उदाहरण
#include<iostream> using namespace std; #define N 2 #define M 3 bool isXORnonZero(int matrix[N][M]) { int xor_value = 0; for (int i = 0; i < N; i++) { xor_value ^= matrix[i][0]; } if (xor_value != 0) return true; for (int i = 0; i < N; i++) { for (int j = 1; j < M; j++) { if (matrix[i][j] != matrix[i][0]) return true; } } return false; } int main() { int mat[N][M] = { { 7, 7, 7 }, { 10, 10, 7 } }; if (isXORnonZero(mat)) cout << "XOR has non-zero value"; else cout << "XOR has zero value"; }
आउटपुट
XOR has non-zero value