演算法心得 求最大子串行之和

2021-10-01 04:26:47 字數 778 閱讀 8921

上面就是題目內容

首先這種需要不斷用當前累加值和之前的最大的累加值做比較的題目,一般都是用動態規劃來求解的,因為你需要不斷的修改結果的最優解,最後得出最好的答案,這道題的動態規劃應該如何寫呢

1、因為需要不斷用當前累加值和之前的最大的累加值做比較,所以需要兩個變數,乙個是當前值sumnum,乙個是歷史最大值summax

2、sumnum乙個個數累加,如果碰到累加之後還小於當前數,就直接拋棄,從當前值累加

3、每加乙個數,就和summax作比較,如果比summax大就更新summax

class solution:

def maxsubarray(self, nums):

sumnum = 0 #累加值

maxsum = nums[0] #最大累加值

for i in nums:

sumnum = sumnum+i #sumnum乙個個數開始累加

sumnum = max(sumnum, i) #判斷累加之後的值是不是比當前的數還小,如果小的話就將當前數賦值給sumnum,如果還是大的話,就繼續用sumnum累加下去

maxsum = max(maxsum, sumnum) #比較累加之後的sumnum是不是比maxsum大,如果大就更新maxsum

print(sumnum, maxsum) #這裡是列印,方便觀察變化

return maxsum

求最大子串行之和

摘要 給出乙個序列,求出其中連續的子串行中和最大的乙個。如 1 3 5 2 1 4 5 最大子串行之和是2 1 4 5 基本思路 最簡單的辦法就是遍歷一邊序列,用變數thissum記錄遍歷過的元素之和,當thisum 0時,繼續相加.若thisum 0,令thisum 0,吧下乙個元素作為新的子串行...

求最大子串行之和

今天一下午在看sharepoint了,又有活幹,所以時間比較緊湊,於是想起了前些日子寫的求最大子串行之和,作為每日一小題吧,暫做自我安慰吧。求最大子串行之和,主要要注意他的效率,1,演算法複雜度是o pow n,2 int max sub int a,int size return max 2,演算...

求最大子串行和演算法

這是個比較經典的c語言演算法問題。記得,在大二參加c語言比賽的時候,碰到過這個問題。當時就在網上學習了這麼乙個經典演算法。但是到了現在已經有點兒遺忘,今天無意之中又看到了這道題,感覺很親切,而且感覺到這個演算法真的非常經典,所以還是決定收藏在部落格中,希望自己能牢記這個問題。這個演算法用到了動態規劃...