AOJ - Problem 0022 : Maximum Sum Sequence
連続した項の和の最大値を出力する問題です。下のソースコードは計算量がO(n^2)です。
ちょっと危ないかと思いきやn<=5000なので大丈夫でした。
またこの問題は最低1つは選択しないといけないようなので、-1,-2,-3という数列なら-1と出力
しなければならないようです。
#include <iostream> #include <algorithm> using namespace std; int main(){ int n, max1, max2, a[5001]; while( cin >> n , n ){ for(int i=0 ; i<n ; i++){ cin >> a[i] ; } max1 = a[0]; for(int i=0 ; i<n ; i++){ int sum = 0; for(int j=i ; j<n ; j++){ sum += a[j]; max1 = max( max1 , sum ); } } cout << max1 << endl; } }