int countSquares(int** matrix, int matrixSize, int* matrixColSize){
int row = matrixSize;
int col = matrixColSize[0];
int f[row+1][col+1];
memset(f, 0, sizeof(f));
int sum=0;
for(int i=0;i<row;i++){
f[i][0]=matrix[i][0];
//printf("f[%d][%d]=%d\n",i,0,f[i][0]);
sum += f[i][0];
}
for(int j=0;j<col;j++){
f[0][j]=matrix[0][j];
//printf("f[%d][%d]=%d\n",0,j,f[0][j]);
sum += f[0][j];
}
sum -= matrix[0][0]; //因为之前加了两遍
for(int i=1;i<row;i++){
for(int j=1;j<col;j++){
if(matrix[i][j]==1)
f[i][j]=fmin( fmin(f[i-1][j], f[i][j-1]), f[i-1][j-1]) + 1;
//printf("f[%d][%d]=%d\n",i,j,f[i][j]);
sum += f[i][j];
}
}
return sum;
}