最大子序列和的四種算法 求一組整數(shù)數(shù)組中的連續(xù)子序列和的最大值?
求一組整數(shù)數(shù)組中的連續(xù)子序列和的最大值?如果主題是代碼中的和對(duì)于不同的個(gè)體考慮,最多會(huì)減少一個(gè)值,這可以通過(guò)預(yù)處理獲得。顯然,最大值只會(huì)出現(xiàn)在Pascal語(yǔ)言不能出現(xiàn)的所有情況下,但我要告訴您“Max
求一組整數(shù)數(shù)組中的連續(xù)子序列和的最大值?
如果主題是代碼中的和
對(duì)于不同的個(gè)體考慮,最多會(huì)減少一個(gè)值,這可以通過(guò)預(yù)處理獲得。顯然,最大值只會(huì)出現(xiàn)在Pascal語(yǔ)言不能出現(xiàn)的所有情況下,但我要告訴您“Max sum subsequence”,這意味著在數(shù)組中找到幾個(gè)連續(xù)的數(shù)據(jù),它們的和是最大的。也許我沒(méi)說(shuō)清楚,讓我給你舉個(gè)例子
例子:一個(gè)數(shù)組:2,4,-33,34,45,-23,7
數(shù)組中任意一個(gè)數(shù)的連續(xù)數(shù)據(jù)都是這個(gè)數(shù)組的子序列
34和45是和最大的子序列
所以要搜索的數(shù)組中必須有負(fù)數(shù),否則會(huì)有負(fù)數(shù)沒(méi)有最大和子序列(整個(gè)數(shù)組是最大的)
不是兩個(gè)數(shù)字,而是任意長(zhǎng)度的,找到任意長(zhǎng)度的子序列
如果:2,4,-33,34,45,-10,12,-2
這不是真的,最大和子序列是:34,45,-10,12。理解以下要素:1。任意長(zhǎng)度2。連續(xù)
在這個(gè)掃描數(shù)組中,從左到右記錄當(dāng)前子序列和這個(gè)子序列的和。如果和在增加,則最大子序列和最大和的和也在增加(不斷更新最大和)。
如果在正向掃描中遇到負(fù)數(shù),則當(dāng)前子序列的總和將減小。
此時(shí),thissum將小于maxsum,當(dāng)然maxsum不會(huì)更新。
如果thissum降為0,則表示可以丟棄先前掃描的段。此時(shí),thissum設(shè)置為0。
然后,thissum將從以下內(nèi)容分析此子段。如果存在大于當(dāng)前最大和的子段,請(qǐng)繼續(xù)更新最大和。
掃描結(jié)果出來(lái)了。