Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Giá trị XOR lớn nhất trong ma trận trong C++


Trong bài toán này, chúng ta được cho một ma trận kích thước n x n. Nhiệm vụ là tạo một chương trình tính giá trị XOR lớn nhất của một hàng hoàn chỉnh hoặc một cột hoàn chỉnh.

Hãy xem một ví dụ để hiểu bài toán:

Đầu vào –

N = 3
mat[N][N] = {{4, 9, 1}
             {2, 8, 3}
             {10, 12, 11}}

Đầu ra –

13

Giải thích –

Hàng 1: 4^9^1 = 12
Hàng 2: 2^8^3 = 9
Hàng 3: 10^12^11 = 13
Cột 1: 4^2^10 = 12
Cột 2: 9^8^12 = 13
Cột 3: 1^3^11 = 9

Ở đây, chúng ta đã tính XOR của tất cả các hàng và cột, sau đó in ra giá trị lớn nhất.

Để giải quyết bài toán này, chúng ta sẽ tính XOR của tất cả các hàng và cột của ma trận và tìm giá trị lớn nhất của chúng.

Một cách để tìm XOR của hàng và cột là lặp qua ma trận 2 lần, một cho cột và một cho hàng.

Nhưng chúng ta có thể làm điều tương tự bằng một lần lặp qua ma trận vuông. Một cho hàng và một cho cột.

Điều này có thể thực hiện bằng cách sử dụng cùng một lần lặp bằng cách dùng matrix[i][j] để duyệt theo hàng và matrix[j][i] để duyệt theo cột.

Ví dụ

Chương trình minh họa giải pháp của chúng ta:

#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<<"Giá trị XOR lớn nhất của tất cả hàng và cột là "<<maxRCXOR(matrix,N);
    return 0;
}

Kết quả

Giá trị XOR lớn nhất của tất cả hàng và cột là 13