标签:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1081
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8839 Accepted Submission(s):
4281
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 5 using namespace std; 6 7 int dp[110]; 8 int num[110][110]; 9 10 int main () 11 { 12 int n; 13 while (~scanf("%d",&n)) 14 { 15 for (int i=0; i<n; i++) 16 for (int j=0; j<n; j++) 17 scanf("%d",&num[i][j]); 18 int ans=-99999; 19 for (int i=0; i<n; i++) 20 { 21 memset(dp,0,sizeof(dp)); 22 for (int j=i; j<n; j++) 23 { 24 int Max=-1; 25 for (int k=0; k<n; k++) 26 { 27 dp[k]+=num[j][k]; //先计算出所有的dp和 28 } 29 for (int k=0; k<n; k++) //1003的做法,代码类似 30 { 31 if (Max+dp[k]<dp[k]) 32 Max=dp[k]; 33 else 34 Max=Max+dp[k]; 35 if (ans<Max) //不断更新最大值 36 { 37 ans=Max; 38 //cout<<j<<" "<<k<<endl; 39 } 40 } 41 } 42 } 43 printf ("%d\n",ans); 44 } 45 return 0; 46 }
hdu 1081 To The Max(dp+化二维为一维)
标签:
原文地址:http://www.cnblogs.com/qq-star/p/4328338.html