数组中取出下标不连续的任意个数,求取出的数的和的最大值
来源:互联网 发布:知我药妆是真的吗 编辑:程序博客网 时间:2024/05/20 13:13
给定一个数组,可以从数组中取出下标不连续的任意个数,求可以取出的数的和的最大值,例如:给出数组A[]={1,2,2,5,3,4,3}可以取出的最大和为2+5+4=11。现再给定数组{3,9,7,5,1,3,1,2,7},能取出的数的和的最大值是24。 解析:典型的动态规划思想,设置一个辅助数组,大小和原数组的大小一样,辅助数组中值表示从原数组起始位置开始到当前下标位置截止的和最大值。比如说我们要求数组{3,9,7,5,1,3,1,2,7},辅助数组元素的值为{3,9,10,14,14,17,17,19,24}。我们如何求得辅助数组?我们假设原数组为arr,辅助数组为data,首先设置辅助数组中data[0] = arr[0],data[1] = arr[1],假设我们当前要求的是data[i],我们已经求得i-1之前不连续任意个数的和的最大值了,我们用arr[i]和data数组中前i-2个数依次相加,如果大于当前最大值,则更新当前最大值,如果小于则继续遍历。直到遍历到第i-2个位置为止。代码如下:#include<iostream>#include<vector>using namespace std;int getMaxValue(vector<int> &arr){if (arr.empty())return 0;vector<int> data(arr.size());data[0] = arr[0];//设置辅助数组data[0]的初始值data[1] = arr[1];//设置辅助数组data[1]的初始值int curMaxVal = data[0];//当前位置的最大值if (data[1] > data[0])curMaxVal = data[1];//从第三个元素开始遍历数组for (int i = 2; i < arr.size(); ++i){int val = arr[i];for (int j = 0; j < i - 1; ++j){//当前值和之前的值相加与当前最大值相比较if (val + data[j] > curMaxVal){curMaxVal = val + data[j];}}data[i] = curMaxVal;}return curMaxVal;//返回最大值}int main(void){vector<int> arr1 = { 1, 2, 2, 5, 3, 4, 3 };cout <<"数组arr1中不连续下标的任意个数的和的最大值:"<< getMaxValue(arr1) << endl;vector<int> arr2 = { 3, 9, 7, 5, 1, 3, 1, 2, 7 };cout << "数组arr2中不连续下标的任意个数的和的最大值:"<<getMaxValue(arr2) << endl;system("pause");return 0;}
0 0
- 数组中取出下标不连续的任意个数,求取出的数的和的最大值
- 数组中取出下标不连续的任意个数,求取出的数的和的最大值
- 求数组中任意连续位置元素和的最大值
- 连续数组和的最大值
- 计算一串连续数组的之间 连续几个数(任意连续)之和的最大值 Microsoft Visual Studio
- 第二十三题 求取和为n的连续的数
- 求一个数组中序列连续数的最大值
- 求数组最大值的下标
- 取出一个数组的最大值
- 查找一个数组中不连续0出现的个数
- 要求一个数组连续下标和的最大值,数组的元素可正、可负、可为零
- 给定任意数组获取任意连续的项求和的最大值,并输出新的数组
- poj2479-在一个数组中求任意不相交的两个子数组之和的最大值
- 求一个数组中三个最大值的下标
- 求一个数组中最大值函数的下标值
- iOS中取数组的最大值、最小值,下标,总和,平均值
- C#中求任意个数的最大值 使用params关键字
- 随机从数组中取出指定的不重复的n个数
- BestCoder #80 - 1002 快速乘法取模
- mac iterm2有什么酷功能?
- java之Secure hash functions
- 浅谈android官方文档中自定义view的demo
- ACM--数学几何--2140 Forever 0.5--水
- 数组中取出下标不连续的任意个数,求取出的数的和的最大值
- Integer源码浅析
- Some Basic Knowledge
- C-滑雪|DFS+dp
- 基于ENVI的图像融合
- Java Socket探究
- 根据Critera获得LocationProvider
- 交换机与路由器的区别
- 职业生涯的开始-2D批量渲染