首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

分治、时间空间的权衡:最大合的连续字串有关问题 (PAT 1007)

2013-04-07 
分治、时间空间的权衡:最大合的连续字串问题 (PAT 1007)maxsofa 0maxendingright 0for i [0, n)/* in

分治、时间空间的权衡:最大合的连续字串问题 (PAT 1007)

maxsofa = 0maxendingright = 0for i = [0, n) /* invariant: maxendingright and maxsofar are accurate for x[0..i-1]*/ maxendingright = max(maxendingright + x[i], 0) maxsofar = max(maxsofar, maxendingright)

根据这个思路,写出代码,一遍AC:)

总结:

  • 保存状态,避免重复计算:在算法整体框架没有大的优化的情况下,时间和空间的trade-off或许会有奇效。memoization本身就是一种用空间换时间的思想,而DP中用一种方式实现了这种思想。不过不要被DP算法所禁锢。因为,这个trade-off的实现是很多变的,就像这题的第2种算法。
  • 分治:它的重要性不必多说了。同样的,DP中有分治的思想,但分治本身也是非常灵活的。
  • 数学归纳证明,对算法的设计和正确性佐证很有帮助。话说它也类似于分治的思想呢。

热点排行