算法-贪心 动态规划
贪心算法,在每一步都求最优解,不理会以前的状态。
和动态规划的区别为,动态规划可以回溯,即理会以前的状态。
用下面的图可以理解(来自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