poj1050 最大子矩陣和
http://poj.org/problem?id=1050
Description
Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*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.
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 * 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
/**
poj 1050 最大子矩陣和
http://blog.sina.com.cn/s/blog_695800d10100q6as.html
算是一類比較經典的問題了
*/
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
using namespace std;
int n,maxx;
int temp[105],a[105][105];
int solve()
{
int maxx=0,sum=0;
for(int i=0; i<n; i++)
{
sum+=temp[i];
if(sum<0)
sum=0;
maxx=max(maxx,sum);
}
return maxx;
}
int main()
{
while(~scanf("%d",&n))
{
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
scanf("%d",&a[i][j]);
maxx=-0xfffffff;
for(int i=0; i<n; i++)
{
memset(temp,0,sizeof(temp));
for(int j=i; j<n; j++)
{
for(int k=0; k<n; k++)
temp[k]+=a[j][k];
int sum=solve();
maxx=max(maxx,sum);
}
}
printf("%d\n",maxx);
}
return 0;
}
/**
3
-2 10 20
100 -1 2
0 -2 -3
*/
相關文章
- 最大子矩陣和矩陣
- 最大子段和 | 最大子矩陣 | 最大M子段和矩陣
- POJ 1050-To the Max(最大子矩陣和)矩陣
- #1502 : 最大子矩陣矩陣
- openjudge1768 最大子矩陣[二維字首和or遞推|DP]矩陣
- 動態規劃-最大子矩陣和(ZOJ 1074 TO THE MAX )動態規劃矩陣
- 第四章:多維陣列和矩陣 ------------- 4.4 找出邊界為1的最大子方陣陣列矩陣
- 53. 最大子陣列和陣列
- 矩陣和陣列矩陣陣列
- CF22B 最大子矩陣問題簡單版矩陣
- 迴圈陣列最大子段和陣列
- bzoj1084: [SCOI2005]最大子矩陣(Dp)矩陣
- hdu4328 最大子矩陣問題O(n*m)掃描思想矩陣
- 最大子陣列和問題的解陣列
- 【力扣】最大子陣列和(貪心)力扣陣列
- [Python手撕]最大子陣列和Python陣列
- 求二維陣列中最大子陣列的和陣列
- 最大連續子陣列和(最大子段和)陣列
- 伴隨矩陣和逆矩陣的關係證明矩陣
- LeetCode53. 最大子陣列和LeetCode陣列
- 生成螺旋矩陣(方陣、矩陣)矩陣
- 第四章:多維陣列和矩陣 ------------- 4.8 子矩陣的最大累加和陣列矩陣
- 鄰接矩陣、度矩陣矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 資料結構之陣列和矩陣--矩陣&不規則二維陣列資料結構陣列矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 矩陣的最短距離和矩陣
- 矩陣矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 3D圖形:矩陣的行列式,矩陣的逆、正交矩陣、齊次矩陣3D矩陣
- 矩陣中最大的二維矩陣矩陣
- 求任意矩陣的伴隨矩陣矩陣
- 【DP】乘積最大子陣列陣列
- Python Numpy的陣列array和矩陣matrixPython陣列矩陣
- webgl 系列 —— 變換矩陣和動畫Web矩陣動畫
- 矩陣的特徵值和特徵向量矩陣特徵
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- 陣列1——求一個陣列的最大子陣列陣列