এই সমস্যাতে, n×n আকারের একটি ম্যাট্রিক্স দেওয়া থাকে। আমাদের কাজ হল যেকোনো একটি পূর্ণ সারারো (row) বা পূর্ণ সারাকলাম (column) এর XOR মানের সর্বোচ্চ মান বের করা।
উদাহরণ
ইনপুট:
N = 3
mat[3][3] = {{4, 9, 1}, {2, 8, 3}, {10, 12, 11}}
আউটপুট:
13
ব্যাখ্যা
Row 1: 4^9^1 = 12 Row 2: 2^8^3 = 9 Row 3: 10^12^11 = 13 Col 1: 4^2^10 = 12 Col 2: 9^8^12 = 13 Col 3: 1^3^11 = 9
সর্বোচ্চ মান হল ১৩।
অপ্টিমাইজড পদ্ধতি
ম্যাট্রিক্স একবার ট্রাভার্স করেই সারারো এবং সারাকলামের XOR বের করা যায়:
- সারারোয়াইজ ট্রাভার্সাল:
matrix[i][j] - সারাকলামওয়াইজ ট্রাভার্সাল:
matrix[j][i]
C++ প্রোগ্রাম উদাহরণ
#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