最大子列和問題

2021-08-21 16:06:37 字數 625 閱讀 7609

這是乙個挺簡單問題,但是由於最近考試有點頻繁,加上很久以前寫過這個題目,所以就來複習下,感覺以前學的東西都忘的差不多了,有點慌啊。感覺這一段時間需要複習下了。不複習要歇逼了。。。

言歸正傳,求最大子串行問題:有很多種方法,這裡就說一下時間複雜度最簡單的演算法,此演算法只需要遍歷一遍就可以,所以時間複雜度為o(n)。

定兩個變數thissum和max,this初始化為0,max等於陣列中的第乙個元素(避免陣列中全為負數的情況),與陣列中的元素相加,在加的過程中

(1)如果thissum>max的話,max=thissum;

(2)如果thissum<0,thissum=0;

然後輸出max。

**為:

#include #include #include #include using namespace std;

int k;

int a[100005];

int main()

thsum+=a[i];

if(maxmax=thsum;

if(thsum<0)

thsum=0;

}printf("%d\n",max);

return 0;

}

最大子列和問題

給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入格式 輸入第1行給出正整數 k 100000 第2行給出k個整數,其間以空格分隔。輸出格式...

最大子列和問題

給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入格式 輸入第1行給出正整數 k 100000 第2行給出k個整數,其間以空格分隔。輸出格式...

最大子列和問題

給出乙個序列,求出最大子列和。演算法一 long maxsum int a,int n return maxsum 這是乙個窮舉的演算法,有三個巢狀的for迴圈,時間複雜度為o n 3 在計算的時候有很多不必要的重複項,例如當i 0,j 3時,和的計算為 a 1 a 2 a 3 當i 0,j 4時,...