1. 程式人生 > >[華為機試練習題]56.求子數組的最大和

[華為機試練習題]56.求子數組的最大和

== process ack turn 多個 popu 基礎 ace ava

題目

描寫敘述:

輸入一個整形數組。

數組中連續的一個或多個整數組成一個子數組,每一個子數組都有一個和。

求全部子數組的和的最大值。

接口

Int GetSubArraySum(Int* pIntArray,Int nCount);

規格

要求時間復雜度為O(n)

舉例

比如輸入的數組為1, -2, 3, 10, -4, 7, 2, -5,和最大的子數組為3, 10, -4, 7, 2,
因此輸出為該子數組的和18

練習階段:

0基礎 

代碼

/*---------------------------------------
*   日期:2015-07-05
*   作者:SJF0115
*   題目:求子數組的最大和
*   來源:華為機試練習題
-----------------------------------------*/
#include <iostream> #include <string.h> #include "oj.h" using namespace std; /* 功能: 輸入:pIntArray:數組,nCout:數組長度 輸出: 返回:返回最大值 */ int GetSubArraySum(int* pIntArray, int nCount){ if(pIntArray == NULL || nCount <= 0){ return 0; }//for int sum = pIntArray[0]; int max = pIntArray[0
]; for(int i = 1;i < nCount;++i){ if(sum < 0){ sum = 0; }//if sum += pIntArray[i]; if(max < sum){ max = sum; }//if }//for return max; }
‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); });

    [華為機試練習題]56.求子數組的最大和