nyoj 44 子串和(子串和最大問題)

2021-09-26 21:58:37 字數 1078 閱讀 3038

記憶體限制:64mb 時間限制:5000ms special judge: no

accepted:12 submit:48

給定一整型數列,找出連續非空子串,使得該子串行的和最大,其中,1<=x<=y<=n。

第一行是乙個整數n(n<=10)表示測試資料的組數)

每組測試資料的第一行是乙個整數n表示序列中共有n個整數,隨後的一行裡有n個整數i(-100=對於每組測試資料輸出和最大的連續子串的和。

複製

1

51 2 -1 3 -2

5

輸入資料很多,推薦使用scanf進行輸入

分析:

只有對正數才進行累加,但每一步都要判斷該值與原先最大值間的最大值

步驟:

①、判斷第i-1個數如果大於0,就類加上第i個數(保證第i位通過前驅、或本身能夠達到最大值)

②、判斷原先my_max 與 現在第i位數字的大小,保留大的數在my_max中

核心**:

1 scanf("

%d", &a[0

]);2

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

3

c/c++**實現(ac):

#include #include 

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 1000*1010

;int

a[maxn];

intmain()

printf(

"%d\n

", my_max);

}return0;

}

nyoj 44 子串和 最大子串和

常見的做法有 列舉區間 動態規劃等。昨天突然想到了乙個o n 的演算法,拿來分享給諸位 我們從後向前看這串數字 5 6 2 3 5 發現倒數第一位就是負數 5 毫無疑問,這個負數肯定不在我的最大子串和裡,因為我們捨去它並不會影響我們鏈結其它有價值的數,所以我們將它拋棄。繼續考察,這時我們遇到了3,我...

NYOJ 44 最大連續子串行和

時間限制 5000 ms 記憶體限制 65535 kb 難度 3 描述給定一整型數列,找出連續非空子串,使得該子串行的和最大,其中,1 x y n。輸入第一行是乙個整數n n 10 表示測試資料的組數 每組測試資料的第一行是乙個整數n表示序列中共有n個整數,隨後的一行裡有n個整數i 100 輸出 對...

計蒜客 最大子陣列 NYOJ題目44 子串和

在乙個陣列中找出和最大的連續幾個數。至少包含乙個數 例如 陣列a 2,1,3,4,1,2,1,5,4 則連續的子串行 4,1,2,1 有最大的和6.輸入格式 第一行輸入乙個不超過1000的整數n。第二行輸入n個整數a i 輸出格式 第一行輸出乙個整數,表示最大的和。樣例輸入3 1 1 2 樣例輸出2...