P1719
#include <bits/stdc++.h>
using namespace std;
int arr[1000][1000];
int num[1000][1000] = {{0}};
int n = 0;
int ans = 0;
void Get_Num() {
for ( int i = 0 ; i < n ; i++ )
num[0][i] = 0;
for ( int i = 0 ; i < n ; i++ ){
num[i][0] = 0;
}
for ( int i = 0 ; i <= n ; i++ ){
for ( int j = 0 ; j <= n ; j++ ){
num[i][j] = arr[i][j];
}
}
for ( int i = 0 ; i < n ; i++ ){
for ( int j = 0 ; j < n ; j++ ){
num[i][j] = num[i][j] + num[i - 1][j] + num[i][j - 1] - num[i - 1][j - 1];
}
}
}
int Get_Ans(){
int max = 0;
int area_size = 0;
for ( int x1 = 0 ; x1 < n ; x1++ ){
for ( int y1 = 0 ; y1 < n ; y1++ ){
for ( int x2 = 0 ; x2 < n ; x2++ ){
for ( int y2 = 0 ; y2 < n ; y2++ ){
area_size = num[x2][y2] - num[x2][y1 - 1] - num[x1 - 1][y2] + num[x1 - 1][y1 - 1];
if(area_size > max){
max = area_size;
}
}
}
}
}
return max;
}
int main () {
cin >> n;
for ( int i = 0 ; i < n ; i++ ){
for ( int j = 0 ; j < n ; j++ ){
cin >> arr[i][j];
}
}
Get_Num();
ans = Get_Ans();
cout << ans;
return 0;
}
题目看这里