求子数组的最大和要求O(n)

来源:互联网 发布:h3c vlan 添加端口 编辑:程序博客网 时间:2024/05/18 23:24
//求子数组的最大和

//输入一个整形数组,有整数也有负数,数组中连续一个或多个子数组,每个子数组都有一个和,求所有子数组的和的最大值,要求时间复杂度O(n)



#include<iostream>int GetMax( int * arr){int max = arr[0];for (int i = 1; i < 10; i++){if (max < arr[i]){max = arr[i];}}return max;}int getMaxSum(int * arr){int result = 0;int tmp = 0;for (int i = 0; i < 10; i++){if (tmp>0){tmp += arr[i];}else{tmp = arr[i];}if (tmp > result)result = tmp;}return result;}using namespace std;void main(){int arr[10] = { 1, -3, 8, -6, 2, -3,4, 8,  -11, 12 };int max = GetMax( arr);if (max <= 0){cout << "最大子数组和为" << max;cin.get();return;}int result = getMaxSum(arr);cout << "最大子数组和为" << result;cin.get();}


4 0
原创粉丝点击