二维前缀和 可与概率论与数理统计的二维概率联系记忆
#include<cstring>
const int N = 1e9 + 7;
using namespace std;
int n,k;
int a[55][55],sum[55][55];
int main(){
while(cin >> n >> k){
for(int i = 1;i<=n;i++){
for(int j =1;j<=n;j++)
{
cin >> a[i][j];
sum[i][j] = sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
}
}
int maxn=0;
for(int i =k;i<=n;i++){
for(int j =k;j<=n;j++){
maxn=max(maxn,sum[i][j]-sum[i][j-k]-sum[i-k][j]+sum[i-k][j-k]);
}
}
cout<<maxn<<endl;
}
return 0;
}