2
// Calculating compatibility scores of ith student and jth mentor3
int cal(int i, int j, vector<vector<int>> &arr1, vector<vector<int>> &arr2) {5
for (int k = 0; k < arr1[0].size(); k++) {6
if (arr1[i][k] == arr2[j][k]) {13
int helper(int i, int m, vector<vector<int>> &arr1, vector<vector<int>> &arr2,19
for (int j = 0; j < m; j++) {22
ans = max(ans, cal(i, j, arr1, arr2) + helper(i + 1, m, arr1, arr2, vis));23
vis[j] = 0; // Backtracking30
int maxCompatibilitySum(vector<vector<int>> &students, vector<vector<int>> &mentors) {31
int m = students.size();33
0); // To keep track of which mentor is already paired up34
return helper(0, m, students, mentors, vis);