算法-贪心 动态规划

贪心算法,在每一步都求最优解,不理会以前的状态。

和动态规划的区别为,动态规划可以回溯,即理会以前的状态。

用下面的图可以理解(来自wiki pedia):

A会一步一步到达m,而不是M。

算法:

while 可以走向下一步;do

找到这一步的最优解

done

 

经典题目

1. 最大子序和

求max(f(i)),由于f(i)取决于f(i - 1) 和 num(i),可以得到f(i) = max(f(i - 1), 0) + num(i).

所以,每前进一步,只需要求前一步的最大值和0的最大值即可。

算法

for i in range(length):

  pre = max(pre, 0) + num(i)

  result = max(pre, result)

return result

 

posted @ 2021-08-28 16:49  xuyv  阅读(39)  评论(0编辑  收藏  举报