UVA-108
Maximum Sum
Time Limit: 3000MS |
|
Memory Limit: Unknown |
|
64bit IO Format: %lld &%llu |
Submit Status
Description
Background
A problem that's simple-to-solve in one dimension was often much more difficult-solve in more than one dimension. Consider satisfying a Boolean expression in conjunctive normal form in which each conjunct consists of exactly 3 disjuncts . This problem (3-SAT) is np-complete. The problem 2-sat is solved quite efficiently, however. In contrast, some problems belong to the same complexity class regardless of the dimensionality of the problem.
The problem
Given a 2-dimensional array of positive and negative integers, find the sub-rectangle with the largest sum. The sum of a rectangle is the sum of the "the elements in" that rectangle. The problem the sub-rectangle with the largest sum are referred to as the maximal sub-rectangle. A Sub-rectangle is any contiguous sub-array of size or greater located within the whole array. As an example, the maximal sub-rectangle of the array:
is in the Lower-left-hand corner:
and has the sum of 15.
Input and Output
The input consists of an array of integers. The input begins with a single positive an integer N on a line by itself indicating the size of the square and the Dimen Sional Array. This was followed by integers separated by white-space (newlines and spaces). These integers make and the array in row-major order (i.e., all numbers on the first row, left-to-right, then all numbers On the second row, left-to-right, etc.). N may be as large as 100. The numbers in the array would be in the range [-127, 127].
The output is the sum of the maximal sub-rectangle.
Sample Input
40-2-7 0 9 2-6 2-4 1-4 1-18 0-2
Sample Output
15
Source
Root:: Competitive programming 2:this increases the lower bound of programming contests. Again (Steven & Felix Halim):: Problem Solving Paradigms:: Dynamic Programming:: Max Sum
Root:: AOAPC i:beginning algorithm Contests (Rujia Liu):: Volume 4. Algorithm Design
Root:: Competitive programming:increasing The Lower Bound of programming contests (Steven & Felix Halim):: Chapter 3. Problem solving Paradigms:: Dynamic Programming:: Maximum Sum
Root:: Competitive programming 3:the New Lower Bound of programming contests (Steven & Felix Halim):: Problem Solvi Ng Paradigms:: Dynamic Programming:: Max 2D Range Sum
Submit Status
AC Code:
#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define LL long long# Define INF 0xffffffffusing namespace Std;int n;int a[105][105];int sum[105][105];int main () {while (scanf ("%d", &n)! = EOF) {for (int i = 1; I <= n; i++) {for (int j = 1; J <= N; j + +) {scanf ("%d", &a[i][j]);}} memset (sum, 0, sizeof (sum)), for (int i = 1; I <= N; i++) {int t = 0;for (int j = 1; J <= N; j + +) {T + = a[i][j];sum[i][ J] = Sum[i-1][j] + t;//printf ("%d", Sum[i][j]);} printf ("%d\n");} int p, q, ans = inf;for (int i = 1; i < n; i++) {for (int j = 1; j < N; j + +) {for (int k = i; k <= N; k++) {for (int L = j; L <= N; l++) {int tmp = Sum[k][l]-sum[i-1][l]-sum[k][j-1] + sum[i-1][j-1];if (tmp > ans) ans = tmp;}}} printf ("%d\n", ans);} return 0;}
Uva-108-maximum Sum (Simple greedy)