問題定義:對於給定序列a1,a2,a3……an,尋找它的某個連續子段,使得其和最大。如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和爲20。
動態規劃算法求解
算法思路如下:
記,則所求的最大子段和爲:
由b[j]的定義知,當b[j-1]>0時,b[j]=b[j-1]+a[j],否則b[j]=a[j]。由此可得b[j]的動態規劃遞推式如下:
b[j]=max{b[j-1]+a[j],a[j]},1<=j<=n。
具體代碼如下:
問題定義:對於給定序列a1,a2,a3……an,尋找它的某個連續子段,使得其和最大。如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和爲20。
動態規劃算法求解
算法思路如下:
記,則所求的最大子段和爲:
由b[j]的定義知,當b[j-1]>0時,b[j]=b[j-1]+a[j],否則b[j]=a[j]。由此可得b[j]的動態規劃遞推式如下:
b[j]=max{b[j-1]+a[j],a[j]},1<=j<=n。
具體代碼如下:
def convert_binary(num): result = [] if num <= 1: result.append(num) else: while True: