840. 矩阵中的幻方
题目链接:840. 矩阵中的幻方
代码如下:
cpp
class Solution {
public:
int numMagicSquaresInside(vector<vector<int>>& grid) {
int m = grid.size(),n = grid[0].size();
int res = 0;
for (int i = 0;i < m - 2;i++) {
for (int j = 0;j < n-2;j++) {
if (grid[i + 1][j + 1] != 5) {
continue;
}
int mask = 0;
int r_sum[3]{};
int c_sum[3]{};
for (int r = 0;r < 3;r++) {
for (int c = 0;c < 3;c++) {
int x = grid[i + r][j + c];
mask |= 1 << x;
r_sum[r] += x;
c_sum[c] += x;
}
}
if (mask == (1 << 10) - 2 &&
r_sum[0] == 15 && r_sum[1] == 15 &&
c_sum[0] == 15 && c_sum[1] == 15) {
res++;
}
}
}
return res;
}
};