n個整數組成的序列a[1],a[2],a[3],…,a[n],
求該序列如a[i]+a[i+1]+…+a[j]的連續子段和的最大值。當所給的整數均為負數時和為0。
例如:-2,11,-4,13,-5,-2,和最大的子段為:11,-4,13。和為20。
input
第1行:整數序列的長度n(2 <= n <= 50000)output第2 - n + 1行:n個整數(-10^9 <= a[i] <= 10^9)
輸出最大子段和。input示例
6output示例-211
-413
-5-2
20
解題思路:
其實這個題很水的,我們只需要o(n)的演算法就能過,如果純暴力的話,應該是o(n^3),對於這個題來說我們只需要
一下和就行了,然後每次判斷這個和是不是》=0,如果是的話,那麼我們就加上a[i],否則sum=a[i],然後每次找最大值,最後輸出最大值就行了。
my code:
#include #include using namespace std;
const int maxn = 50000+5;
int a[maxn];
int main()
printf("%lld\n",max);
}return 0;
}
51nod 1049 最大子段和
1049 最大子段和 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 n個整數組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,1...
51Nod 1049 最大子段和
1049 最大子段和 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 n個整數組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,1...
51nod 1049 最大子段和
1049 最大子段和 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 n個整數組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,1...