題目描述:
給出乙個數列(元素個數不多於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 思路 遍歷所有可能的序列,對每個...