輸入乙個整形陣列,陣列裡有正數也有負數。
陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。
求所有子陣列的和的最大值。要求時間複雜度為o(n)。
例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4, 7, 2,
因此輸出為該子陣列的和18。
例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,
那麼最大的子陣列為3, 10, -4, 7, 2,
因此輸出為該子陣列的和18
所有的東西都在以下倆行,
即:b : 0 1 -1 3 13 9 16 18 7
sum: 0 1 1 3 13 13 16 18 18
其實演算法很簡單,當前面的幾個數,加起來後,b<0後,
把b重新賦值,置為下乙個元素,b=a[i]。
當b>sum,則更新sum=b;
若b//*
//* function : maxsubarray
//* description : the max sub array
//* parameters : type name description
//* return : type values description
//* created date/by : 2011/12/06 perfect2011
//*
//* revision history:v1.0
#include #include using namespace std;
int max(int array,int n)
return max;
}int main(int argc, char *argv)
; cout<
陣列中子陣列最大值 分治思想
include using namespace std 求陣列中子陣列的最大值 引數1 陣列,引數2 陣列起始位置,引數3 陣列尾位置的下乙個位置 int maxsum int int,int int selmaxvalue int,int,int 選擇最大值 int find max crossi...
獲取陣列中子串乘積的最大值
題目 給定乙個陣列,例如arr 那個8和4相乘得到32,是連續數相乘得到的最大值,得到該值即可。解答 注意此過程的三種情況即可,最大數成為最大,最小數變成最大,當前數最大。時間複雜度o n public static double getmax double arr double max arr 0...
找出乙個陣列中子陣列和的最大值
讓我們看這樣乙個陣列 1,2,3,4,5,6,7 很明顯,子陣列和的最大值是8,這個子陣列是 3,4,5,6 那麼我們怎麼找到最大值是多少呢?我們假設從第一位開始對每一位加和,當加到3的時候,我們發現,之前的1 2 1,如果加上3的話等於2,還不如直接從3開始大一些,這時候我們果斷拋棄3前面的計算結...