最大連續子串行和問題

2022-08-09 08:45:10 字數 855 閱讀 5970

第一次看《資料結構與演算法分析——c語言描述》這本書的時候,被書中一上來就給的最大子串行和問題給直接鎮住了。直觀感覺就是好難,好牛逼。

問題描述:給定整數k1,k2,k3,...,kn,求從第i個數到第j個數的最大值。(如果所有整數均為負數,那麼最大子串行和規定為0)

根據題目描述,最直接的演算法就是窮舉所有的從i到j的和,比較它們的大小,留下最大的那個和,就是我們所求的最大子串行和。

演算法1:暴力窮舉法

int maxsubsequencesum(const vector& num, int n)

if (thissum > maxsum)

}} return maxsum;

}

它的時間複雜度是o(n³),這個時間複雜度很大。不是乙個好的演算法。

演算法2:簡化求和

int maxsubsequencesum(vector&num, int n)

} }return maxsum;

}

它相對於演算法1就快了許多,它的時間複雜度是o(n²)。當然我們說一般而言這種時間複雜度也不是乙個好的演算法。

演算法3:聯機演算法(online algorithm)

int maxsubsequencesum(const vector& num, int n)

if (thissum < 0) //規定如果是負數,則最大值為0;

}return maxsum;

}

這個演算法的時間複雜度是o(n),賊快。

最大連續子串行和 問題

為了證書,重新開始刷資料結構,原本也就是學的一知半解的,上來就給我來了乙個最大子串行和問題,搞得我很無奈,貌似hdu1003就是這個問題.第一 重新定義乙個新的sum陣列,然後進行儲存連續子串行的和,遇到前面的加和sum i 1 小於0,就直接讓sum i a i include include i...

問題 A 最大連續子串行

問題 a 最大連續子串行 命題人 外部匯入 時間限制 1.000 sec 記憶體限制 32 mb 解決 493提交 1082統計 題目描述 給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和為...

最大連續子串行和

最大連續子串行和問題是個很老的面試題了,最佳的解法是o n 複雜度,當然其中的一些小的地方還是有些值得注意的地方的。這裡還是總結三種常見的解法,重點關注最後一種o n 的解法即可。需要注意的是有些題目中的最大連續子串行和如果為負,則返回0 而本題目中的最大連續子串行和並不返回0,如果是全為負數,則返...