本周知识要点:
6.1、子序列和定义、定长子序列和算法、不定长子序列和算法,最大子序列和算法、子序列积算法
6.2、找主元算法(递归,分段处理),附加数学证明
1. 顺序结构
1.1. 最大子序列和(定长窗口版本)
问题描述:给一段数列(m),子序列定长(n),问何时子序列和最大。
1.1.1. 算法一(直观算法)
思路:运用两重循环 一重循环用来移动窗口(即起始位置),第二重循环求和。此外再设置一个Maxsum用来记录最大和 以及位置。
代码实现比较简单,这里不再演示。
时间复杂度为
1.1.2. 算法二(改进第一种算法)
思路:由第一种算法可得,每一次向前滑动 只需要减去第一个 加上后一个 就可达到滑动的目的。
时间复杂度为
1.2. 最大子序列和(不定长窗口版本)
问题描述:给一段数列(m),子序列不定长,问起始位置在哪时,多长的子序列和最大。