第一次看《資料結構與演算法分析——c語言描述》這本書的時候,被書中一上來就給的最大子串行和問題給直接鎮住了。直觀感覺就是好難,好牛逼。
問題描述:給定整數k1,k2,k3,...,kn,求從第i個數到第j個數的最大值。(如果所有整數均為負數,那麼最大子串行和規定為0)
根據題目描述,最直接的演算法就是窮舉所有的從i到j的和,比較它們的大小,留下最大的那個和,就是我們所求的最大子串行和。
演算法1:暴力窮舉法
它的時間複雜度是o(n³),這個時間複雜度很大。不是乙個好的演算法。int maxsubsequencesum(const vector& num, int n)
if (thissum > maxsum)
}} return maxsum;
}
演算法2:簡化求和
它相對於演算法1就快了許多,它的時間複雜度是o(n²)。當然我們說一般而言這種時間複雜度也不是乙個好的演算法。int maxsubsequencesum(vector&num, int n)
} }return maxsum;
}
演算法3:聯機演算法(online algorithm)
這個演算法的時間複雜度是o(n),賊快。int maxsubsequencesum(const vector& num, int n)
if (thissum < 0) //規定如果是負數,則最大值為0;
}return maxsum;
}
最大連續子串行和 問題
為了證書,重新開始刷資料結構,原本也就是學的一知半解的,上來就給我來了乙個最大子串行和問題,搞得我很無奈,貌似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,如果是全為負數,則返...