Python:
class Solution:
def countSubmatrices(self, grid: List[List[int]], k: int) -> int:
m, n = len(grid), len(grid[0])
sg = [[0] * (n+1) for _ in range(m+1)]
result = 0
for i in range(1, m+1):
for j in range(1, n+1):
sg[i][j] = sg[i-1][j] + sg[i][j-1] - sg[i-1][j-1] + grid[i-1][j-1]
if sg[i][j] <= k:
result += 1
return result