【发布时间】:2015-08-22 06:54:17
【问题描述】:
给定一个包含 n 个元素的数组:
d[0], d[1], ..., d[n-1]。 计算所有连续子数组最大差的总和(S)。形式上:S = sum{max{d[l,...,r]} - min{d[l, ..., r}},∀ 0
输入:
4
1 3 2 4
输出:
12
说明:
l = 0; r = 0;数组:[1] sum = max([1]) - min([1]) = 0
l = 0; r = 1;数组:[1,3] sum = max([1,3]) - min([1,3]) = 3 - 1 = 2
l = 0; r = 2;数组:[1,3,2] sum = max([1,3,2]) - min([1,3,2]) = 3 - 1 = 2
l = 0;r = 3;数组:[1,3,2,4] sum = max([1,3,2,4]) - min([1,3,2,4]) = 4 - 1 = 3
l = 1; r = 1 将导致零
l = 1; r = 2;数组:[3,2] sum = max([3,2]) - min([3,2]) = 3 - 2 = 1;
l = 1; r = 3;数组:[3,2,4] sum = max ([3,2,4]) - min([3,2,4]) = 4 - 2 = 2;
l = 2; r = 2;将导致零
l = 2; r = 3;数组:[2,4] sum = max([2,4]) - min([2,4]) = 4 -2 = 2;
l = 3; r = 3 将导致零;
总和 = 12
我的想法: 暴力检查所有可能的子集;传染性阵列。
How to optimize it for larger number?
【问题讨论】:
标签: arrays algorithm optimization subset