for(int i=1;i { for(int j=1;j { dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+nums[i][j];}} int count=0; for(int i=0;i { for(int j=0;j { start=2;while(start int x=i+start-1 ;int y=j+start-1; int sum=0; if(x { if(i>0&&j==0) { sum= dp[x][y]-dp[i-1][y]; } else if(j>0&&i==0) { sum=dp[x][y]-dp[x][j-1]; } else if(i>0&&j>0) { sum=dp[x][y]-dp[i-1][y]-dp[x][j-1]+dp[i-1][j-1]; } else{ sum=dp[x][y]; } if(sum==(start*start)/2&&start%2==0) { maps[start-1]++;} if(start%2==1) { maps[start-1]=0;}} start++ } } }return maps;}