ในปัญหานี้ เราได้รับเมทริกซ์ขนาด 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] สำหรับการเดินทางแบบแถว และ matrix[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