1. 程式人生 > >動態規劃;最大子段和;溫故而知新-。-;這個動規公式找的很聰明;

動態規劃;最大子段和;溫故而知新-。-;這個動規公式找的很聰明;

求整個序列的最大子段和, 那麼最大子段和一定是一個段,從整個序列入手設計動態規劃的確沒啥思路,得馬上跳越思路到其他的方向。

最大子段一定是從某個i開始的一個段,所以b[i]=max(a[i],a[i]+b[i+1]);

意思是: 從i開始往右的最大子段 。  如果b[i+1]即從i+1開始的最大子段和是正的,那麼b[i]=a[i]+b[i+1],如果b[i+1]最大是負的,那麼b[i]就是a[i]了, 不是a[i]+b[i+1]了,因為一個數加上一個負數一定比本身還小的。。。 最終我們求得是max( b[i]) ,即從每個位置i開始的最大段長度中的最大值。