
풀이과정
점화식 : d[1] = v[1], (n>1) d[n] = max( d[n-1] + v[n] , v[n] )
n개의 정수가 주어질 때, d[1] ~ d[n] 의 값 중 가장 큰 값이 제일 큰 연속합.
코드
더보기
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int d[100001] = { -1000, };
int iValue[100001] = { 0, };
int iInput = 0;
cin >> iInput;
for (int i = 1; i <= iInput; ++i)
{
cin >> iValue[i];
if (i == 1) d[1] = iValue[1];
else d[i] = max(d[i - 1] + iValue[i], iValue[i]);
}
for (int i = 1; i <= iInput; ++i)
{
if (d[0] < d[i]) d[0] = d[i];
}
cout << d[0] << endl;
return 0;
}
'알고리즘(C++) > 백준 알고리즘' 카테고리의 다른 글
| [백준] C++ 4936번 : 섬의 개수 (0) | 2019.11.20 |
|---|---|
| [백준] C++ 1110번 : 더하기 사이클 (0) | 2019.11.20 |
| [백준] C++ 2156번 : 포도주 시식 (0) | 2019.11.19 |
| [백준] C++ 1932번 : 정수 삼각형 (0) | 2019.11.14 |
| [백준] C++ 1149번 : RGB 거리 (0) | 2019.11.14 |