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

2021-07-30 13:04:01 字數 1017 閱讀 2034

時間限制: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

5

6 -1 5 4 -7

樣例輸出

10

14

思路:最開始自己想了一種方法,將陣列延伸到2n-1,即a[i+n]=a[i].然後按照求最大子串和來求解,但是交上去錯了,後來找到資料發現,如果出現中間的一段序列為負值,但是不會使累加值為負,則計算出的結果是原串的最大子串和,跟自己構造的那個串沒關聯。然後參考別人的思路,即:1.如果最大的子串和在原串中,則求出原串的最大子串和的值就是結果 2.如果最大的子串和序列包含跨越了尾部跟頭部的序列,則用總的串和減去原串中的最小的子串和即為結果。

#include 

#include

#include

int s[100005];

int main()

if( b < 0)

}printf("%d\n",max(sum-min_s , max_s));

}return 0;

}

ps: 還有一種思路,就是先找出整個字串的最小序列和,然後再從他的下一位開始找最大序列和,之後就跟nyoj-44字串和的求法一樣啦。但是這個有點麻煩,還要處理陣列的座標問題。

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 陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和 二.設計思路 在上一次的以為迴圈陣列的基礎上...