一道算法題

 1.上午主要做了對翻譯任務的劃分,下午把論文翻譯完畢。

2.明天要講的算法題:對一個集合,求出其連續元素組成的子集中,和最大的子集

我對這道題的理解是:

1)若集合中最小值大於0,意味着所有的都大於0,則最大的子集和,爲所有值加起來

2)若集合中最大值小於0,意味着所有的都小於0,則最大的子集和,爲集合中最大值

3)其他情況,我的想法:找出所有極值點(此時該極值點必定爲正值),並找出所有極值點兩邊第一個負數的點的位置,以此負數點位邊界,求出除負數值以外的點之和。再比較這些和,取出最大的

可是這種想法有問題:例如46,-26,11,-1,40,26,-8,9

不難找出極值點和爲:46,11,40+26,9

可是有個問題就是:這所有值加起來仍然比40+26大

爲此,我想到了,把邊界擴展到兩個負數之外,可是仍然不行,只要40+26兩邊的元素之和大於0的時候都會出現該情況。

莫非要把遍歷範圍擴展到所有的值?再想想吧

發佈了56 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章