int formingMagicSquare(vector<vector<int>> s) {
// Possible magic squares to compare against
vector<vector<vector<int>>> magic_squares = {
{{8, 1, 6}, {3, 5, 7}, {4, 9, 2}},
{{6, 1, 8}, {7, 5, 3}, {2, 9, 4}},
{{4, 9, 2}, {3, 5, 7}, {8, 1, 6}},
{{2, 9, 4}, {7, 5, 3}, {6, 1, 8}},
{{8, 3, 4}, {1, 5, 9}, {6, 7, 2}},
{{4, 3, 8}, {9, 5, 1}, {2, 7, 6}},
{{6, 7, 2}, {1, 5, 9}, {8, 3, 4}},
{{2, 7, 6}, {9, 5, 1}, {4, 3, 8}}
};
int min_cost = INT_MAX;
// For each possible magic square
for (auto &magic_square : magic_squares) {
int cost = 0;
// For each element in the input matrix and the corresponding element in the magic square
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cost += abs(s[i][j] - magic_square[i][j]);
}
}
// Update minimum cost
min_cost = min(min_cost, cost);
}
return min_cost;
}
No comments:
Post a Comment