/*================================================================*\ 題目:求子數組的最大和 輸入一個整形數組,數組裏有正數也有負數。數組中連續的一個或多個整數組成一個子數組,每一個子數組都有一個和。求全部子數組的和的最大值。ios
要求時間複雜度爲 O(n) 。數組
例如輸入的數組爲 1, -2, 3, 10, -4, 7, 2, -5 ,和最大的子數組爲 3, 10, -4, 7, 2 ,所以輸出爲該子數組的和18 。 \*================================================================*/spa
分析:code
遍歷數組時,get
#include <iostream> using namespace std; int get_max_sum(int a[],int len){ #保存當前元素和最大值 int a_max[len]; #記錄最大和 int max=a[0]; a_max[0]=a[0]; for(int i=1;i<len;i++){ a_max[i]=a[i]>a_max[i-1]+a[i]?a[i]:a_max[i-1]+a[i]; max=a_max[i]>max?a_max[i]:max; } return max; } int main(){ int a[10]={-1,2,10,-4,7,2,-5}; int max=get_max_sum(a,10); cout<<"max:"<<max<<endl; return 0; }
補充C++語法(都快忘了)編譯器
/* *C++多行註釋 */ //包含了頭文件 <iostream> #include <iostream> //告訴編譯器使用 std 命名空間。 using namespace std; // main() 是程序開始執行的地方 int main() { cout << "Hello World"; // 輸出 Hello World return 0; }