筆試題5 最大連續子數列

2021-09-24 20:16:17 字數 619 閱讀 3035

題目描述:

給出乙個數列(元素個數不多於100),數列元素均為負整數、正整數、0。請找出數列中的乙個連續子數列,使得這個子數列中包含的所有元素之和最大,在和最大的前提下還要求該子數列包含的元素個數最多,並輸出這個最大和以及該連續子數列中元素的個數。

核心**:

#include using namespace std;

int main()

tmp = 0;

ans = 0; //子數列的和

len = 0; //子數列的長度

beg = 0; //子數列起始位

for(i = 1; i <= n; i++)

else if(tmp + a[i] == ans && i - beg > len)

if(tmp + a[i] < 0)

else

tmp += a[i]; // 0《新的子數列《當前最大數列,存放入tmp中,以供下一輪加上新元素再與當前最大數列比較

} cout << "最大和為: " << ans << endl;

cout << "該子數列連續個數為:" << len << endl;

return 0;

}

最大連續子數列和

題目分析 當我們從前向後遍歷陣列時,對於陣列中每乙個整數,它只有兩種選擇 1 加入到之前的subarray 2 自己另起乙個subarray。那什麼時候會出現這兩種情況呢?如果之前的subarray的總體和大於0的話,我們認為其對後續的結果是有貢獻的。這種情況下我們選擇 將其加入之前的subarra...

最大連續子數列和

最大連續子數列和一道很經典的演算法問題,給定乙個數列,其中可能有正數也可能有負數,我們的任務是找出其中連續的乙個子數列 不允許空序列 使它們的和盡可能大。為了更清晰的理解問題,首先我們先看一組資料 8 2 6 1 5 4 7 2 3 第一行的8是說序列的長度是8,然後第二行有8個數字,即待計算的序列...

筆試題 最大連續序列和

給定n個數,求子序列的最大和。這個子串行可以有字首和字尾 也可以為空 但是字首和字尾的每個數都是原來數的負數,求這個最大和。輸入為兩行,第一行為整數n 1 100 第二行為n個整數 32位int範圍內 輸出最大連續序列和。示例 6 3 5 2 6 8 3 輸出 23 思路 遍歷所有可能的序列,對每個...