題目:
求乙個迴圈陣列的連續子陣列的最大和。
解法:《程式設計之美》上給出一種方法:
1)求[0, n-1]的最大和;
2)如果跨過了n-1,則計算以n-1為尾部的最大子陣列[i, n-1],以0為開始的最大子陣列[0 , j];
如果i<=j,則m = a[0]+...+a[n-1];
否則,m= a[0]+...+a[j] + a[i]+...a[n-1].
該方法有問題:
例如,1 7 -3 6 2
以2結束的為全串,以1開始的為全串,有m=全加和。
但,我們可以看到,最大應該為6 2 1 7.
因此,我們可以這樣做:
1 7 -3 6 2 1 7 -3 6 2
這樣做一次連線,第二種情況先計算以n-1為尾部的最大子陣列[i, n-1],以0為開始的最大子陣列[0 , j];
然後,如果i<=j,則從i開始,找出長度小於陣列長度的最大和即可。
首尾相連陣列的最大子陣列和
1.求0 n 1的最大子陣列和 m 1 2.求跨越 n 1和0的最大子陣列和,分別求從0開始的最大和m 21,從n 1開始的最大和m 22,分別記錄得到最大和的位置pi,pj,這裡分兩種情況考慮 a.pib.pi pj,則求0 n 1的最小子陣列和m 3,及0 n 1的和mx m max m 1,m...
首尾相連陣列的最大子陣列和
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連續元素可以組成乙個子陣列,其中存在這樣的子陣列arr i arr n 1 arr 0 arr j 現在請你這...
面試題(6)首尾相連的陣列的子陣列的最大和
題目 給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連續元素可以組成乙個子陣列,其中存在這樣的子陣列arr i arr n 1 arr 0 arr j 現在請你幫忙找出所有連續子陣列和的最大值 如果陣列中的元素全部為負數,則最大...