C ++中矩阵的最大XOR值

在这个问题上,我们得到一个大小为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次,一次对列,另一次对行。

但是我们可以对平方矩阵进行一次迭代来完成相同的操作。一个用于行,另一个用于列。

通过使用matrix [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