• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
HaibaraAi
博客园    首页    新随笔    联系   管理    订阅  订阅

HDU 1081 To The Max

To The Max

Time Limit: 2000/1000 MS (Java/Others)    

Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 6981    Accepted Submission(s): 3364

Problem Description
Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1 x 1 or greater located within the whole array. The sum of a rectangle is the sum of all the elements in that rectangle. In this problem the sub-rectangle with the largest sum is referred to as the maximal sub-rectangle.
As an example, the maximal sub-rectangle of the array:
0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2
is in the lower left corner:
9 2 -4 1 -1 8
and has a sum of 15.
 
Input
The input consists of an N x N array of integers. The input begins with a single positive integer N on a line by itself, indicating the size of the square two-dimensional array. This is followed by N 2 integers separated by whitespace (spaces and newlines). These are the N 2 integers of the array, presented in row-major order. That is, all numbers in the first row, left to right, then all numbers in the second row, left to right, etc. N may be as large as 100. The numbers in the array will be in the range [-127,127].
 
Output
Output the sum of the maximal sub-rectangle.
 
Sample Input
4
0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2
 
Sample Output
15
 
Source
Greater New York 2001
 
Recommend
We have carefully selected several similar problems for you:  1024 1025 1080 1078 1074 
 1 #pragma comment(linker,"/STACK:102400000,102400000")
 2 #include <cstdio>
 3 #include <vector>
 4 #include <cmath>
 5 #include <queue>
 6 #include <cstring>
 7 #include <iostream>
 8 #include <algorithm>
 9 using namespace std;
10 #define INF 0x7fffffff
11 #define mod 1000000007
12 #define ll long long
13 #define maxn 105
14 #define pi acos(-1.0)                          
15 int n, m, ans,s;
16 int a[maxn][maxn], sum[maxn],dp[maxn],c[maxn];
17 int main(){
18     while (~scanf("%d", &n) && n){
19         for(int i=1;i<=n;i++)
20         for(int j=1;j<=n;j++)scanf("%d", &a[i][j]);
21         ans = 0;
22         for (int i = 1; i <= n; i++){
23             memset(c, 0, sizeof c);
24             for (int j = i; j <= n; j++){
25                 dp[0] = 0; 
26                 for (int k = 1; k <= n; k++){
27                     c[k]+=a[j][k];
28                     dp[k] = max(dp[k - 1] + c[k], c[k]);
29                     ans = max(ans, dp[k]);
30                 }
31             }
32         }
33         printf("%d\n", ans);
34     }
35     return 0;
36 }
View Code
posted @ 2013-12-29 04:56  HaibaraAi  阅读(101)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3