**自己的學習小記錄之最大子串行和**
今天看了最大子串行和和問題,感覺乙個優質的演算法是真的猛!不多說,記錄一下四種求他們的方法。
**第一種**(就是舉出每乙個子串行)
**如下
#include
#include
intmaxsubsum1
(int a,
int n )
//k這個迴圈是為了求子序列的和,個數為j-k+1,i是控制從第幾個開始加,debug乙個個去看慢慢看懂得哈哈,自己一開始也不太清楚。時間複雜度是n*n*n即o(n^3).
if(maxmax=sum;
}return max;
}int
main()
;int n=10;
printf
("%d"
,maxsubsum1
(a,n));
return0;
}
第二種(略微比第一種高階一點)
**如下
#include
#include
intmaxsubsum1
(int a,
int n )
//避免了求子序列每一次都從a[0]開始加,每加一次就比較一次,比上面那個好理解而且時間複雜度為n*n即o(n^2);
}return max;
}int
main()
;int n=10;
printf
("%d"
,maxsubsum1
(a,n));
return0;
}
第三種(比較複雜,目前看懂了但感覺寫還是有點困難,時間複雜度為o(nlogn))
**比較長,應用了遞迴和分、治思想哈哈細緻的我也不太清楚。主要思想還是看懂了。
主要思想如下:
4 -3 5 -2
-1 2 6 -2
如果這八個數找最大子串行把他均勻分為兩部分,前面部分最大子串行是6,後面的是8,前面的所有和是4後面的所有和是7.比較6 8 4+7這三個數中的最大值就是最大子串行。前半部分後半部分又可以分為前半部分後半部分,就開始遞迴了。感覺自己現在水平不行,不是很能理解。
第四種(最簡單也耗時短的一種時間複雜度為o(n^2))
**如下
#include
#include
intmax
(int a,
int n)
return max;
}int
main()
;int n=10;
printf
("%d"
,max
(a,n));
return0;
}
這些僅是自己學習記錄,肯定是看了書看了其他博主的文章。望各位大佬多多指教! 小菜雞學習包之requests init
from exceptions import requestsdependencywarning首先是這個from import,我這個小菜雞去查了一下 就是絕對 absolute 和相對 relative 引入的區別 import會去sys.modules 乙個字典,記錄了所有預載入的模組 裡面查...
初學Python的小菜雞 Day1
print是在python中扮演著輸出的角色,他可以直接輸出變數,也可以輸出字串,但是要與學習c語言的時候相區別,這裡的print不等於printf,不可以把c語言中的輸出嫁接到python中。下列應該是一些學到的print的幾種型別 1 直接輸出字串 print i love you 注意三代的p...
前端小菜雞實習期的奮鬥史
從沒有任何實習經驗開始 正式開始實習工作的第一天,我們四個實習生 實際上只有三個在做前端,後來又走了乙個 都到齊了,我們的組長給我們分配了乙個任務 提供三個psd素材,乙個是h5頁面的,乙個是pc端的,還有乙個是h5頁面時導航欄展開時的具體模樣,要求我們用bootstrap jquery做出頁面,最...