hunter学算法-从一个数组中找到和最大的子数组,数组中可能有负数。
2013-07-11 22:44
239 查看
题目:从一个数组中找到和最大的子数组,数组中可能有负数。
想法:穷举法实现次问题,列出所有情况,进行比较记录!
编写一个计算数组中某个范围内的和的方法。
依次遍历所有的情况,记录最大值。
C++实现如下:
想法:穷举法实现次问题,列出所有情况,进行比较记录!
编写一个计算数组中某个范围内的和的方法。
依次遍历所有的情况,记录最大值。
C++实现如下:
//============================================================================ // Name : MaxSubArray.cpp // Author : jue // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> using namespace std; class MyData { public: int startIndex; int endIndex; int maxData; }; int getSum(int datas[],int start,int end) { int sum = 0; for(int i = start;i <= end;i++) { sum += datas[i]; } return sum; } MyData* findMaxSubArray(int datas[],int length) { MyData *data = new MyData; for( int i = 0; i < length;i ++){ for( int j = i; j < length; j ++) { int sum = getSum(datas,i,j); if((i == 0 && j==0) || (sum > data->maxData)) { data->maxData = sum; data->startIndex = i; data->endIndex = j; } } } return data; } int main() { int datas[] = {1,-2,-3}; MyData* data = findMaxSubArray(datas,3); cout<<"max = "<<data->maxData<<" start : "<<data->startIndex<<" end : "<<data->endIndex; return 0; }
相关文章推荐
- 从一个数组中同时找出最大最小数-算法导论第九章
- 算法设计:从一个很大很大的数组里找前N个最大数的思路之一
- 连续子数组最大和问题(能够处理全是负数,返回子数组的起止索引的O(N)算法)
- 每天一道算法题(14)——N个降序数组,找到最大的K个数
- 子数组的最大和[算法]HDU1003/HDU1231/找到这些数使得它满足:它是左边的最大值且是右边的最小值
- 每天一道算法题(14)——N个降序数组,找到最大的K个数
- 数据结构与算法——给定整数A1,A2,....An,....(可能有负数),求该数据序列的最大子序列的和
- 说你有一个数组,其中第i个元素是第i天给定股票的价格。设计一个算法来找到最大的利润,最多可以完成两个交易。
- 【算法】_011_最大子数组_暴力法
- 在一个无序数组中找到第K个最小或者最大的元素
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 【算法题】找到数组中和为固定值的两个元素
- lintcode&九章算法——Google 面试题 | 3个非重复子数组最大和
- C++数组排成最大的数(数组,算法,排列)
- 算法训练 寻找数组中最大值
- 不排序,两种方法找到无序数组的最大K个数
- 采用递归求数组里面求最大子序列的算法(手绘图解)
- 用n(0)次求一个数组里面最大子数组的和(数组可以输入负数)
- 算法导论-最大子数组问题-线性时间复杂度算法分析与实现
- 算法1:一个无序的int数组,包含正负数, 排序成:左边为负数 右边为正数