NYOJ 983 首尾相連陣列的最大子陣列和

2021-07-15 11:41:10 字數 1158 閱讀 5909

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:4

描述給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連續元素可以組成乙個子陣列,其中存在這樣的子陣列arr[i],…arr[n-1],arr[0],…,arr[j],現在請你這個acm_lover用乙個最高效的方法幫忙找出所有連續子陣列和的最大值(如果陣列中的元素全部為負數,則最大和為0,即乙個也沒有選)。

輸入輸入包含多個測試用例,每個測試用例共有兩行,第一行是乙個整數n(1=輸出對於每個測試用例,請輸出子陣列和的最大值。樣例輸入

6

1 -2 3 5 -1 2

56 -1 5 4 -7

樣例輸出
10

14

思路:因為該陣列是首尾相連的,所以有最大值的子陣列有兩種情況,一種是在陣列中間的,那就用求子陣列最大值的方式求,即從頭開始求和,每當加上乙個值後是正數時,與max比較,取最大值,當加上乙個值後是負數時,將subsum置0,即放棄前面小於0的部分。第二種最大子陣列是取在兩端的,那就轉換思路,求原串中連續的最小子陣列和,串的總和 - 連續最小子陣列和 = 成環情況下的最大子陣列和。兩種情況都求一下,然後比較求出最大值。

**如下:

#include#include#include#include#includeusing namespace std;

int a[100005];

int main()

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

maxx = max(maxx, subsum);

} subsum = 0;

for(i = 0; i < n; i++)//求原始串的最小子串

minn = min(minn, subsum);

} cout << max(maxx, sum - minn) <

NYOJ 983 首尾相連陣列的最大子陣列和

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連續元素可以組成乙個子陣列,其中存在這樣的子陣列arr i arr n 1 arr 0 arr j 現在請你這...

nyoj983 首尾相連陣列的最大子陣列和

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連 續元素可以組成乙個子陣列,其中存在這樣的子陣列arr i arr n 1 arr 0 arr j 現在請你這...

結對開發6 首尾相連矩陣

結對成員 范德一 趙永恆 一.題目與要求 題目 返回乙個二維整數陣列中最大子陣列的和 要求 1 輸入乙個二維整形陣列,陣列裡有正數也有負數。2 二維陣列首尾相接,象個一條首尾相接帶子一樣。3 陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和 二.設計思路 在上一次的以為迴圈陣列的基礎上...