一道算法题

 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的时候都会出现该情况。

莫非要把遍历范围扩展到所有的值?再想想吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值