解释一下这个求最大子序列和问题的线性算法,会算法的高手来!!
2个回答
展开全部
这个问题和求最大子数组的问题类似,问题的要求是数字序列中必须同时包含正数和负数,如果都是正数,那么整个数组之和必然最大,如果都是负数,那么个数为0的序列的和最大,这两种情况没有意义。下面我来解释这个算法:
使用ThisSum来保存当前遍历到的数字序列的和,使用MaxSum保存当前遍历到的数字序列的最大值,每次循环时讲数组的元素加入ThisSum中,然后判断ThisSum和MaxSum的大小,如果ThisSum>MaxSum,则更新MaxSum,但是一旦ThisSum的值为负数,即小于0,那么表示前面遍历过的所有数字之和小于0,那么后续的任何数与前面这些数之和必然都不是最大子序列和,所以ThisSum置零,重新在后续的数字序列中找最大的子序列和。
如果满意请采纳!
使用ThisSum来保存当前遍历到的数字序列的和,使用MaxSum保存当前遍历到的数字序列的最大值,每次循环时讲数组的元素加入ThisSum中,然后判断ThisSum和MaxSum的大小,如果ThisSum>MaxSum,则更新MaxSum,但是一旦ThisSum的值为负数,即小于0,那么表示前面遍历过的所有数字之和小于0,那么后续的任何数与前面这些数之和必然都不是最大子序列和,所以ThisSum置零,重新在后续的数字序列中找最大的子序列和。
如果满意请采纳!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询