摘要: 有n个正整数组成一个 序列。给定整数s, 求长度最短的连续序列, 使他们的最大和大于或等于S。书中给出3种思路, 先上图:A. 暴力枚举起点和终点,并且依次求和。 复杂度n3B. 如图所示,A方法中曲线部分包括许多重复的区间, 可以通过保存前缀来降低一些复杂度, 得到n2算法。 令B[i] = A[0]+A[1]+...A[I], 则B[j] - B[i] = A[i] +...+A[j], 也就是可以在O(1)时间内计算出子序列和。 此方法本质是:通过空间换时间省去计算过程。 但此方法也要枚举起点和终点,复杂度不会低于n2.C. 考虑只枚举终点。对于点 j, 只需要找到满足 B[j]-B.. 阅读全文
posted @ 2013-03-22 22:08 tsubasa_wp 阅读(1179) 评论(0) 推荐(0) 编辑