题目描述:
思路:方法一:先把所有的三阶幻方列举出来,然后一一比较
方法二:暴力法,八个相加
代码如下:
class Solution {
public:
int numMagicSquaresInside(vector<vector<int>>& grid) {
if(grid.size()<3||grid[0].size()<3) return 0;
int cnt=0,num=0;
map<string,int>side;
side["816357492"]=1;
side["834159672"]=1;
side["618753294"]=1;
side["672159834"]=1;
side["492357816"]=1;
side["438951276"]=1;
side["294753618"]=1;
side["276951438"]=1;
for(int i=0;i<grid.size()-2;i++){
int j=i+1,k=i+2;
for(int m=0;m<grid[0].size()-2;m++){
string temp="";
temp+=to_string(grid[i][m]);
temp+=to_string(grid[i][m+1]);
temp+=to_string(grid[i][m+2]);
temp+=to_string(grid[j][m]);
temp+=to_string(grid[j][m+1]);
temp+=to_string(grid[j][m+2]);
temp+=to_string(grid[k][m]);
temp+=to_string(grid[k][m+1]);
temp+=to_string(grid[k][m+2]);
if(side[temp]==1)
cnt++;
}
}
return cnt;
}
};