轰炸区最优选取

题目链接:https://ac.nowcoder.com/acm/problem/14505

思路:前缀和

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=60;
int arr[maxn][maxn];
int sum[maxn][maxn];
int n,k;
int main(){
    while(cin>>n>>k){
        for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>arr[i][j];
            sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+arr[i][j];
        }
    }
    int ans=0;
    for(int i=k;i<=n;i++){
        for(int j=k;j<=n;j++){
            ans=max(ans,sum[i][j]-sum[i-k][j]-sum[i][j-k]+sum[i-k][j-k]);
        }
    }
    cout<<ans<<endl;
    }
    return 0;
}

 

posted @ 2021-07-28 16:09  ZangYiDe  阅读(50)  评论(0)    收藏  举报