先上题目:
Time Limit: 2000/1000 MS
(Java/Others) Memory Limit: 65536/32768 K
(Java/Others)
Total Submission(s): 7177 Accepted
Submission(s): 3470
1 #include <cstdio> 2 #include <cstring> 3 #define MAX 101 4 #define INF ~(1<<31) 5 using namespace std; 6 7 int s[MAX][MAX]; 8 int h[MAX][MAX]; 9 int dp[MAX][MAX]; 10 11 int main() 12 { 13 int n; 14 int ans,maxn; 15 while(scanf("%d",&n)!=EOF) 16 { 17 memset(s,0,sizeof(s)); 18 memset(h,0,sizeof(h)); 19 for(int i=1; i<=n; i++) 20 { 21 for(int j=1; j<=n; j++) 22 { 23 scanf("%d",&s[i][j]); 24 h[i][j]=h[i][j-1]+s[i][j]; 25 } 26 } 27 maxn=-INF; 28 for(int i=1; i<=n; i++) 29 { 30 for(int j=1; j<=i; j++) 31 { 32 ans=-1; 33 for(int k=1; k<=n; k++) 34 { 35 if(ans>0) ans+=h[k][i]-h[k][j-1]; 36 else ans=h[k][i]-h[k][j-1]; 37 maxn=ans>maxn ? ans : maxn; 38 } 39 } 40 } 41 printf("%d\n",maxn); 42 } 43 return 0; 44 }
原文:http://www.cnblogs.com/sineatos/p/3560325.html