【1】求子數組的最大和

/*================================================================*\ 題目:求子數組的最大和 輸入一個整形數組,數組裏有正數也有負數。數組中連續的一個或多個整數組成一個子數組,每一個子數組都有一個和。求全部子數組的和的最大值。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;
}
相關文章
相關標籤/搜索