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
*/
相關文章
- #1502 : 最大子矩陣矩陣
- 第四章:多維陣列和矩陣 ------------- 4.4 找出邊界為1的最大子方陣陣列矩陣
- 53. 最大子陣列和陣列
- 矩陣和陣列矩陣陣列
- LeetCode53. 最大子陣列和LeetCode陣列
- [Python手撕]最大子陣列和Python陣列
- 【力扣】最大子陣列和(貪心)力扣陣列
- 求二維陣列中最大子陣列的和陣列
- 最大連續子陣列和(最大子段和)陣列
- 伴隨矩陣和逆矩陣的關係證明矩陣
- 第四章:多維陣列和矩陣 ------------- 4.8 子矩陣的最大累加和陣列矩陣
- 資料結構之陣列和矩陣--矩陣&不規則二維陣列資料結構陣列矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 鄰接矩陣、度矩陣矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 矩陣的最短距離和矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 【刷題筆記】LeetCode-53 最大子陣列和筆記LeetCode陣列
- 矩陣矩陣
- 求任意矩陣的伴隨矩陣矩陣
- 【DP】乘積最大子陣列陣列
- 廣州C++信奧老師解一本通題 1260:1282:最大子矩陣C++矩陣
- 矩陣的特徵值和特徵向量矩陣特徵
- 240. 搜尋二維矩陣 II 和74. 搜尋二維矩陣矩陣
- 理解矩陣矩陣
- 海浪矩陣矩陣
- 矩陣相乘矩陣
- 稀疏矩陣矩陣
- 螺旋矩陣矩陣
- 矩陣乘法矩陣
- 8.6 矩陣?矩陣
- 找矩陣矩陣
- 矩陣分解矩陣
- 快手矩陣管理平臺,矩陣管理有方法矩陣
- 向量和矩陣求導公式總結矩陣求導公式
- webgl 系列 —— 變換矩陣和動畫Web矩陣動畫
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- 矩陣:如何使用矩陣操作進行 PageRank 計算?矩陣
- 演算法學習:矩陣快速冪/矩陣加速演算法矩陣