例如:
序列K{k1,k2,k3,k4,,,kn}; 求其中地址連續(xù)的序列的和的最大值。
這是我在面試的時(shí)候遇到的問(wèn)題,回來(lái)之后好好琢磨了一下,發(fā)現(xiàn)這其中的很大奧秘
可能這里會(huì)用到算法,但是選用哪一種算法能夠使時(shí)間復(fù)雜度最低呢,從剛開始的窮舉法到遞歸(分治)法到最后的動(dòng)態(tài)規(guī)劃法,我因?yàn)榻裉鞎r(shí)間有限就不一一舉例了,我就將時(shí)間復(fù)雜度最低的動(dòng)態(tài)規(guī)劃法舉例一下好啦!
int MaxSubSequence(const int A[],int n){ int currentSum,Maxsum,j;currentSum=Maxsum=0;for(j=0;j<n;j++){ currentSum+=A[j]; if(currentSum>MaxSum){ MaxSum = currentSum; }else if(currentSum<0){ currentSum=0; }}return MaxSum;}在代碼中可以看到 currentSum 是始終更新的,這里的時(shí)間復(fù)雜度為 O(n)。 找工作每天跑的真累啊!我的要求也不高,只要有項(xiàng)目做讓我能力提升就可以。哎!!
我是最文藝的程序猿!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注