子数组之和的最大值(二维)
来源:互联网 发布:美股王软件 编辑:程序博客网 时间:2024/06/10 09:13
解法一:
最直接的方法,枚举一个矩形区域,然后再求这个矩形区域中元素的和。
int max(int x, int y)
{
return (x > y) ? x : y;
}
//@parameters
//n,行数
//m,列数
int MaxSum(int *A, int n, int m)
{
maximum = -INF;
for (i_min = 1; i_min <= n; i_min++)
for (i_max = i_min; i_max <= n; i_max++)
for (j_min = 1; j_min <= m; j_min++)
for (j_max = j_min; j_max <= m; j_max++)
maximum = max(maximum, Sum(i_min, i_max, j_min, j_max));
return maximum;
}
for (i = 0; i <= n; i++)
PS[i][0] = 0;
for (j = 0; j <= M; j++)
PS[0][j] = 0;
for (i = 1; i <= n; i++)
for (j = 1; j <= M; j++)
{
PS[i][j] = PS[i - 1][j] + PS[i][j - 1] - PS[i - 1][j - 1] + B[i][j];
}
解法二:
//@parameters
//A,二维数组
//n,行数
// m,列数
int MaxSum(int* A, int n, int m)
{
maximum = -INF;
for (a = 1; a <=n; a++)
for (c = a; c <= n; c++)
{
Start = BC(a, c, m);
All = BC(a, c, m);
for (i = m - 1; i >= 1; i--)
{
if (Start < 0)
Start = 0;
Start += BC(a, c, i);
if (Start > All)
All = Start;
}
if (All > maximum)
maximum = All;
}
return maximum;
}
- 子数组之和的最大值(二维)
- 子数组之和的最大值(二维)
- 【ACM】数组的子数组之和的最大值(二维)
- 二维子数组之和的最大值
- 二维子数组之和的最大值
- 二维子数组之和的最大值
- 子数组之和的最大值(二维)
- 子数组之和的最大值(二维)
- 二维子数组之和的最大值
- 编程之美---子数组之和的最大值(二维)
- 求子数组之和的最大值(二维)
- 2.15 子数组之和的最大值(二维)
- 二维数组的子数组之和的最大值
- 子数组之和最大值(二维数组)
- 编程之美 子数组之和的最大值(二维)
- 数字之魅:子数组之和的最大值[二维]+[三维]
- 一维和二维子数组之和最大值
- 求数组的连续子数组之和的最大值(一维二维)
- html字符转义
- 数据类型和常用运算
- NS3实例分析(4)-- third.cc
- 《剑指Offer》面试题7:用两个栈实现队列
- 小米2015笔试第二题
- 子数组之和的最大值(二维)
- 关于Leetcode
- C语言出现“烫”字符的内存分析
- 《C++编程》第3章第17题
- P122.17
- 什么是shell
- 【声明】本博客部分文章来自本人51CTO博客:jiyanle.blog.51cto.com
- 《算法一》—单向链表
- H - Tickets HDU 1260 (动态规划)