Uva 108 Maximum Sum
2016-05-29 21:56
330 查看
#include<iostream> #include<cstdio> #include<string> #include<map> #include<algorithm> #include<vector> #include<queue> #include<set> #include<cstring> #include<stack> #include<cmath> using namespace std; int main() { int N; int arr[110][110]; int Sum[110][110]; while(scanf("%d",&N)!=EOF) { int i,j; memset(arr,0,sizeof(arr)); memset(Sum,0,sizeof(Sum)); for(i=1;i<=N;i++) { for(j=1;j<=N;j++) { scanf("%d",&arr[i][j]); Sum[i][j]=Sum[i-1][j]+Sum[i][j-1]-Sum[i-1][j-1]+arr[i][j]; } } int maximum=-(1<<30); for(i=1;i<=N;i++) { for(j=0;j<i;j++) { int min=0; for(int k=1;k<=N;k++) { int temp=Sum[i][k]-Sum[j][k]-min; if(temp>maximum) maximum=temp; if(Sum[i][k]-Sum[j][k]<min) min=Sum[i][k]-Sum[j][k]; } } } cout<<maximum<<endl; } return 0; }