数组非连续元素最大和
2012-07-23 03:28
337 查看
原题:http://tech-queries.blogspot.com/2009/05/max-possible-sum-of-non-consecutive.html
这里使用DP来解答
但是既然都不是连续的 而且是一个正数数组 那么只有2中情况 一种是奇数idx 一种是偶数idx
不过还是给出DP代码:
#include <cstdlib>
#include <algorithm>
int findMaxSum(int* a, int n)
{
int* s = (int*)malloc(sizeof(int) * n);
s[0] = a[0];
s[1] = a[1];
int maxSum = std::max(s[0], s[1]);
for(int i = 2; i < n; i++)
{
s[i] = std::max(s[i - 1], s[i - 2] + a[i]);
if(s[i] > maxSum)
maxSum = s[i];
}
return maxSum;
};
int main()
{
int a[] = {6, 4, 2, 8, 1};
int res = findMaxSum(a, 5);
return 0;
}
这里使用DP来解答
但是既然都不是连续的 而且是一个正数数组 那么只有2中情况 一种是奇数idx 一种是偶数idx
不过还是给出DP代码:
#include <cstdlib>
#include <algorithm>
int findMaxSum(int* a, int n)
{
int* s = (int*)malloc(sizeof(int) * n);
s[0] = a[0];
s[1] = a[1];
int maxSum = std::max(s[0], s[1]);
for(int i = 2; i < n; i++)
{
s[i] = std::max(s[i - 1], s[i - 2] + a[i]);
if(s[i] > maxSum)
maxSum = s[i];
}
return maxSum;
};
int main()
{
int a[] = {6, 4, 2, 8, 1};
int res = findMaxSum(a, 5);
return 0;
}
相关文章推荐
- 给一个数组,元素都是整数(有正数也有负数),寻找连续的元素相加之和为最大的序列。
- JAVA :在给定一个数组中,可以取得多个连续的子串。在众多子串中,求各元素和为最大值的连续子串!
- 找出数组连续元素相加的最大和
- 求数组中任意连续位置元素和的最大值
- 算法题:找出一个数组中相加值最大的连续序列元素
- 求数组中连续子元素的最大值(动态规划)
- 数组连续元素之和最大
- 求一个乱序数组的元素最大连续长度
- 找出给定数数组里连续的元素和的最大值
- 求数组最大连续元素之和
- 如何计算一个整形数组里的连续元素和的最大值?
- 求解一个数组中连续元素最大值
- 求解数组中子数组连续元素的之和的最大值
- php求正负数数组中连续元素最大值示例
- 找出给定数数组里连续的元素和的最大值
- php求正负数数组中连续元素最大值示例
- 164. Maximum Gap *HARD* -- 无序数组找出排序后连续元素的最大间隔
- 要求一个数组连续下标和的最大值,数组的元素可正、可负、可为零
- 每天一道LeetCode----从数组中选择若干不连续元素使得总和最大
- 计算一个整形数组里的连续元素和的最大值