连续子数组的最大和
来源:互联网 发布:日本以外全部沉没 知乎 编辑:程序博客网 时间:2024/04/29 11:36
例子:当数组为{1,-2,3,10,-4,7,2,-5} 时,和最大的子数组为{3,10,-4,7,2},因此输出该子数组的和18。
思路:从头到尾逐个累加数组中的每一个数,初始为0,当走到某一个数字时,若前面的累加和小于0,这时说明若加上当前的值和值仍会小于当前值,因此就将当前的和重置为当前所指元素的值,一直走到尾数为止,若当前和值大于前面的和值就记录一下最大值。
代码:
#include <assert.h>#include <iostream>using namespace std;bool isInvalidInput = false;int ArrayGreatSum(int* arr,int length){if (arr == NULL || length <= 0){isInvalidInput = true;return 0;}isInvalidInput = false;int CurrentSum = 0;int GreatSum = 0x80000000;for (int i = 0; i < length; ++i){if (CurrentSum <= 0){CurrentSum = arr[i];}else{CurrentSum = CurrentSum + arr[i];}if (CurrentSum > GreatSum){GreatSum = CurrentSum;}}return GreatSum;}int main(){ int nlen;cout<<"input array elem number:";cin>>nlen;int* arr = new int[nlen];cout<<"input elem:"<<endl;for (int i = 0; i < nlen; ++i){cin>>arr[i];}int greatsum = ArrayGreatSum(arr,nlen);if (isInvalidInput){cout<<"invalid input!"<<endl;}else{cout<<"array great sum:"<<greatsum<<endl;}delete[] arr;arr = NULL;}
0 0
- 数组连续子数组的和最大
- 数组连续子数组的最大和
- 连续子数组的最大和
- 连续子数组的最大和
- 连续子数组的最大和
- 求连续子数组的最大和
- 连续子数组的最大和
- 求连续子数组的最大和
- 求连续子数组的最大和
- 连续子数组的最大和
- 连续子数组的最大和
- (8)连续子数组的最大和
- 求连续子数组的最大和
- 求连续子数组的最大和
- 连续子数组的最大和
- 求连续子数组的最大和
- 连续子数组的最大和
- 连续子数组的最大和
- sql重建索引
- 批量修改文件名
- 为什么ListView.setOnItemClickListener、setOnCreateContextMenuListener会无效
- PHP全局变量
- ADS-B & 雷达显示终端5.5
- 连续子数组的最大和
- GetSet学习
- 【DP】HDU 1712 ACboy needs your help 背包
- BroadcastReceiver的两种注册方式(静态注册和动态注册)
- Uboot学习:移植Uboot出现的问题以及解决
- CentOS 6.5 Varnish缓存服务详解及应用实现
- 润乾集算报表从集算器获得多个结果集的示例
- ubuntu下使用eclipse开发springmvc项目--实现controller接口方式
- EXTJS上层组件在IE中首次显示不出现问题