一道算法题

 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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章