原题题目
题解
Leetcode官方题解图文视频清晰解答
代码实现(首刷大部分看解小部分自解)
int numSubmat(int** mat, int matSize, int* matColSize){
int dp[151][151],i,j,k,count = 0,temp;for(i=0;i<matSize;i++){
memset(dp[i],0,sizeof(int) * matColSize[0]);for(j=0;j<matColSize[0];j++){
dp[i][j] = mat[i][j];if(j && dp[i][j])dp[i][j] += dp[i][j-1];}}for(i=0;i<matSize;i++){
for(j=0;j<matColSize[0];j++){
temp = dp[i][j];for(k=i;k>=0 && dp[k][j];k--){
if(dp[k][j])count+=(temp=fmin(temp,dp[k][j]));elsebreak;}}}return count;
}