Consider a matrix M with dimensions width * height, such that every cell has value 0 or 1, and any square sub-matrix of M of size sideLength * sideLength has at most maxOnes ones.
Return the maximum possible number of ones that the matrix M can have.
Example 1:
Input: width = 3, height = 3, sideLength = 2, maxOnes = 1
Output: 4
Explanation:
In a 3*3 matrix, no 2*2 sub-matrix can have more than 1 one.
The best solution that has 4 ones is:
[1,0,1]
[0,0,0]
[1,0,1]
Consider a \(x \times x\) square, we need to select at most \(maxOnes\) points inside the square and set them to 1. Note that when the point at coordinate \((i, j)\) is selected, all points at coordinates \((i\pm k_1 \times x, j\pm k_2 \times x)\) can be equivalently set to 1. Therefore, we calculate the number of equivalent positions of the coordinate \((i, j)\) in the matrix, and select the top \(maxOnes\) with the most quantities.
The time complexity is \(O(m \times n)\), where \(m\) and \(n\) are the number of rows and columns of the matrix, respectively.