মনে করুন একটি ২D অ্যারে আছে N x M সাইজের। কাজ হল প্রতিটি সারি থেকে একটি সংখ্যা নির্বাচন করা যাতে নির্বাচিত উপাদানগুলোর XOR নন-জিরো বা শূন্য থেকে বড় হয়। ধরুন একটি ম্যাট্রিক্স:
| 7 | 7 | 7 |
| 10 | 10 | 7 |
যদি XOR করি, উত্তর নন-জিরো হবে, কারণ দুটি সারির শেষ উপাদান বাদে ৭ এবং ১০।
এই সমস্যাটি সমাধান করা খুব সহজ। প্রথমে প্রতিটি সারের প্রথম কলামের উপাদানগুলোর XOR ০ কিনা চেক করুন। যদি নন-জিরো হয়, তবে সম্ভব। অন্যথায় চেক করুন কোনো সারি দুটি বা অধিক ভিন্ন উপাদান আছে কিনা, যদি হয় তবে ও সম্ভব। উপরের দুটি শর্তে কোনোটি পূরণ না হলে সম্ভব নয়।
উদাহরণ কোড
#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";
return 0;
}
আউটপুট
XOR has non-zero value