mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Create 840.cpp
This commit is contained in:
parent
ec159367b3
commit
a1f917027f
66
LeetCode-CN/840.cpp
Normal file
66
LeetCode-CN/840.cpp
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int numMagicSquaresInside(vector<vector<int>>& grid) {
|
||||||
|
int rows = grid.size();
|
||||||
|
int cols = grid[0].size();
|
||||||
|
|
||||||
|
int endRow = rows - 3;
|
||||||
|
int endCol = cols - 3;
|
||||||
|
|
||||||
|
int cnt = 0;
|
||||||
|
|
||||||
|
for (int row = 0; row <= endRow; row++)
|
||||||
|
{
|
||||||
|
for (int col = 0; col <= endCol; col++)
|
||||||
|
{
|
||||||
|
int bin[16] =
|
||||||
|
{
|
||||||
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //0~9
|
||||||
|
0,0,0,0,0,0
|
||||||
|
};
|
||||||
|
for (int i = row; i < row+3; i++)
|
||||||
|
{
|
||||||
|
for (int j = col; j < col + 3; j++)
|
||||||
|
{
|
||||||
|
++bin[grid[i][j]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (find_if(bin + 1, bin + 16, [](const int& x) {return x != 0; }) != (bin + 16)) continue;
|
||||||
|
int base = grid[row][col] + grid[row][col + 1] + grid[row][col + 2];
|
||||||
|
|
||||||
|
bool flag = false;
|
||||||
|
|
||||||
|
for (int i = 0 ; i < 3; i++)
|
||||||
|
{
|
||||||
|
int sum = 0;
|
||||||
|
int xsum = 0;
|
||||||
|
for (int j = 0; j < 3; j++)
|
||||||
|
{
|
||||||
|
sum += grid[row + i][col + j];
|
||||||
|
xsum += grid[row + j][col + i];
|
||||||
|
}
|
||||||
|
if (sum != base || xsum != base)
|
||||||
|
{
|
||||||
|
flag = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flag) continue;
|
||||||
|
|
||||||
|
int dsum = 0;
|
||||||
|
int xdsum = 0;
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
dsum += grid[row + i][col + i];
|
||||||
|
xdsum += grid[row + 2 - i][col + 2 - i];
|
||||||
|
}
|
||||||
|
if (dsum != base || xdsum != base) continue;
|
||||||
|
|
||||||
|
++cnt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cnt;
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user